博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2160 Sequence one(DFS)
阅读量:5031 次
发布时间:2019-06-12

本文共 1437 字,大约阅读时间需要 4 分钟。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 #define MAXN 20002 8 9 10 //适用于正整数11 template
12 inline void scan_d(T &ret) {13 char c; ret=0;14 while((c=getchar())<'0'||c>'9');15 while(c>='0'&&c<='9') ret=ret*10+(c-'0'),c=getchar();16 }17 18 int a[1010];19 int cnt;20 int ans[1010];21 int tot;22 int n, k;23 int flag;24 25 int check(int i,int j) //检查是否有出现过的数字26 {27 while (i < j)28 if (a[i++] == a[j])29 return 0;30 return 1;31 }32 33 void dfs(int now, int num)34 {35 int i;36 if (num == tot) {37 ++cnt;38 for (i = 0;i < tot-1; ++ i)39 printf("%d ",ans[i]);40 printf("%d\n",ans[tot-1]);41 if (cnt == k) flag = 1;42 return;43 }44 if (num == 0) { //第一次不存在前一个数,特殊处理45 for (i = 0;i < n; ++ i) {46 if (check(0,i)) {47 ans[num] = a[i];48 dfs(i,1);49 if (flag) return;50 }51 }52 } else {53 for (i = now + 1;i < n; ++ i) {54 if (a[i] >= a[now] && check(now+1,i)) {55 ans[num] = a[i];56 dfs(i,num + 1);57 if (flag) return;58 }59 }60 }61 }62 63 int main()64 {65 int i, t;66 while (~scanf("%d%d",&n,&k)) {67 for (i = 0;i < n; ++ i)68 scan_d(a[i]);69 cnt = 0;70 for (tot = 1;cnt < k; ++ tot) {71 flag = 0;72 t = cnt;73 dfs(0,0);74 if (t == cnt || flag) break; //达到要求个数或者输出完所有可能情况结束75 }76 puts("");77 }78 return 0;79 }
代码君

 

转载于:https://www.cnblogs.com/usedrosee/p/4192686.html

你可能感兴趣的文章
CF717A Festival Organization(第一类斯特林数,斐波那契数列)
查看>>
oracle直接读写ms sqlserver数据库(二)配置透明网关
查看>>
控件发布:div2dropdownlist(div模拟dropdownlist控件)
查看>>
Oracle composite index column ordering
查看>>
ActiveReports 报表控件官方中文入门教程 (3)-如何选择页面报表和区域报表
查看>>
kaggle竞赛
查看>>
区块链入门教程
查看>>
域 搭建OU 组织单元
查看>>
npm常用命令
查看>>
南海区行政审批管理系统接口规范v0.3(规划)4.2.【queryExpireList】当天到期业务查询...
查看>>
[置顶] 细说Cookies
查看>>
[wp7软件]wp7~~新闻资讯,阅读软件下载大全! 集合贴~~~
查看>>
生成指定位数随机数的方法
查看>>
java的垃圾回收
查看>>
Essential C++学习笔记
查看>>
python+selenium进行简单验证码获取
查看>>
where,having与 group by连用的区别
查看>>
【MySQL】MySQL锁和隔离级别浅析二 之 INSERT
查看>>
Oracle T4-2 使用ILOM CLI升级Firmware
查看>>
4.14上午
查看>>