蓝桥杯(第一天)

简介: 蓝桥杯(第一天)

842. 排列数字

给定一个整数 n,将数字1∼n 排成一排,将会有很多种排列方法。

现在,请你按照字典序将所有的排列方法输出。

输入格式

共一行,包含一个整数 n。

输出格式

按字典序输出所有排列方案,每个方案占一行。

数据范围:

1≤n≤7

输入样例:

3

输出样例:

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
#include<stdio.h>
#define N 8 
int n;
int std[N];
int used[N];
void dfs(int u){
  if(u>n){
    for(int i=1;i<=n;i++){
      printf("%d ",std[i]);
    }
    printf("\n"); 
  }
  for(int i=1;i<=n;i++){
    if(used[i]==0){
      std[u]=i;
      used[i]=1;
      dfs(u+1);
      std[u]=0;
      used[i]=0;
    }
  }
}
int main(){
  scanf("%d",&n);
  dfs(1);
  for(int i=1;i<=n;i++){
    used[i]=0;
  }
  return 0;
} 

92. 递归实现指数型枚举

从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。

输入格式

输入一个整数 n。

输出格式

每行输出一种方案。

同一行内的数必须升序排列,相邻两个数用恰好 11 个空格隔开。

对于没有选任何数的方案,输出空行。

本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。

数据范围

1≤n≤15

输入样例:

3

输出样例:

3
2
2 3
1
1 3
1 2
1 2 3
#include<stdio.h>
#define N 16
int n;
int std[N];//表示当前状态,0表示未确定,1表试未选,2表示选 
void dfs(int u){
  if(u>n){
    for(int i=1;i<=n;i++){
      if(std[i]==2){
        printf("%d ",i); 
      }
    } 
    printf("\n");
    return ;
  }
  std[u]=2;
  dfs(u+1);
  std[u]=0;
  std[u]=1;
  dfs(u+1);
}
int main()
{
  scanf("%d",&n);
  dfs(1);
  return 0;
 }
相关文章
|
6月前
|
安全
第十四届蓝桥杯集训——Date与Calendar函数
第十四届蓝桥杯集训——Date与Calendar函数
43 0
刷题第一天
我从简单到难,一起走上漫漫刷题路! 爱你们,我会持续在我的博客中更新我每天刷题的内容! 相互交流,爱你们哦!
题目 2571: 蓝桥杯2020年第十一届省赛真题-回文日期
题目 2571: 蓝桥杯2020年第十一届省赛真题-回文日期
|
存储 算法 索引
Leetcode第一周练习总结(1.1~1.7)
Leetcode第一周练习总结(1.1~1.7)
|
算法 C++
蓝桥杯练习题七 - 第几天(c++)
蓝桥杯练习题七 - 第几天(c++)
126 0
蓝桥杯练习题七 - 第几天(c++)
|
程序员
蓝桥杯倒数七天之每日复习第一天
大家好,我是泡泡,离蓝桥杯还有一周,大家放平心态!!冲刺省一 国一!!! 因为是复习,是之前做过的题,跟着做过的小伙伴试着别看自己之前的代码敲出来!
157 0
蓝桥杯倒数七天之每日复习第一天
|
关系型数据库 MySQL
坚持刷题的第三周(四)
坚持刷题的第三周(四)
144 1
坚持刷题的第三周(四)
蓝桥31日冲刺 | 每日三题题解报告 第一天
大家好,我是泡泡,今天给大家带来今日打卡三道题的题解
169 0
|
机器学习/深度学习
洛谷每日三题之第一天
洛谷每日三题之第一天