一、题目回顾

题目链接:Lotto

Sample Input

7 1 2 3 4 5 6 7
8 1 2 3 5 8 13 21 34
0

Sample Output

1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 4 5 6 7
1 3 4 5 6 7
2 3 4 5 6 71 2 3 5 8 13
1 2 3 5 8 21
1 2 3 5 8 34
1 2 3 5 13 21
1 2 3 5 13 34
1 2 3 5 21 34
1 2 3 8 13 21
1 2 3 8 13 34
1 2 3 8 21 34
1 2 3 13 21 34
1 2 5 8 13 21
1 2 5 8 13 34
1 2 5 8 21 34
1 2 5 13 21 34
1 2 8 13 21 34
1 3 5 8 13 21
1 3 5 8 13 34
1 3 5 8 21 34
1 3 5 13 21 34
1 3 8 13 21 34
1 5 8 13 21 34
2 3 5 8 13 21
2 3 5 8 13 34
2 3 5 8 21 34
2 3 5 13 21 34
2 3 8 13 21 34
2 5 8 13 21 34
3 5 8 13 21 34

题意:以升序的形式给定k个数,输出从中挑选6个数满足升序的所有情况。

二、解题思路

  • 两个参数,第一个保存当前搜索的位置,第二个保存已挑选的个数。

三、代码

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #include <cstring>
 5 using namespace std;
 6 const int maxn = 1e4+10;
 7 #define INF 0x3f3f3f3f
 8 int a[50];                //子集S
 9 int b[10];                //存放6个数
10 int k;
11 bool vis[50];
12
13 void dfs(int pos,int num)
14 {
15     if(num==6){
16         for(int i=0;i<5;i++)    printf("%d ",b[i]);
17         printf("%d\n",b[5]);
18         return;
19     }
20     for(int i=pos;i<k;i++){
21         if(!vis[i]){
22             vis[i] = 1;
23             b[num] = a[i];
24             dfs(i+1,num+1);
25             vis[i] = 0;                    //方便下一次序列继续使用
26         }
27     }
28
29 }
30 int main()
31 {
32     int kase = 0;
33     while(cin>>k && !(k==0)){
34         if(kase++)    printf("\n");        //打印空行
35         for(int i=0;i<k;i++){            //从0开始
36             scanf("%d",&a[i]);
37         }
38         memset(vis,0,sizeof(vis));
39         dfs(0,0);
40     }
41     return 0;
42 }

转载于:https://www.cnblogs.com/xzxl/p/7306290.html

DFS(6)——hdu1342Lotto相关推荐

  1. DFS(二):骑士游历问题

    在国际象棋的棋盘(8行×8列)上放置一个马,按照"马走日字"的规则,马要遍历棋盘,即到达棋盘上的每一格,并且每格只到达一次.例如,下图给出了骑士从坐标(1,5)出发,游历棋盘的一种 ...

  2. 水洼数dfs(java)

    问题描述: 有一个大小为 N×M 的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出 园子里总共有多少水洼? *限制条件N, M ≤ 100 样例:输入 N=10, M=12园子如下图 ( ...

  3. C++算法——DFS(图解)

    前言 这篇原本是两个搜索算法,但是发现BFS那个单独看的人多,所以这篇改为单独的DFS,建议先看完BFS 简介 深度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一.其别名又叫DFS,其过程 ...

  4. 【hdu1175】连连看——dfs(剪枝)

    题目: 连连看 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  5. 图的遍历——DFS(邻接矩阵)

    递归 + 标记 一个连通图只要DFS一次,即可打印所有的点. #include <iostream> #include <cstdio> #include <cstdli ...

  6. 水管工游戏:dfs(递归)

    添柴网这题好想不能评测,所以不确保代码的正确性 题目描述: 这小节有点难,看不太懂可以跳过哦. 最近小哼又迷上一个叫做水管工的游戏.游戏的大致规则是这样的.一块矩形土地被分为N * M的单位正方形,现 ...

  7. 骑士游历数组任意起点c语言,DFS(二):骑士游历问题

    在国际象棋的棋盘(8行×8列)上放置一个马,按照"马走日字"的规则,马要遍历棋盘,即到达棋盘上的每一格,并且每格只到达一次.例如,下图给出了骑士从坐标(1,5)出发,游历棋盘的一种 ...

  8. 二叉树的深搜(DFS)与广搜(BFS)

    转载自: https://blog.csdn.net/u011613367/article/details/50950408 数据结构中的有两个比较重要的算法.深度优先搜索和广度优先搜索. 二叉树中的 ...

  9. leetcode 310. Minimum Height Trees | 310. 最小高度树(图的邻接矩阵DFS / 拓扑排序)

    题目 https://leetcode.com/problems/minimum-height-trees/ 题解 方法1:图的邻接矩阵 DFS(超时) 我一想,这不就是个图嘛,于是随手敲出一个 DF ...

最新文章

  1. 为什么 SSH 的默认端口是 22 ?
  2. HTTP GET URL的最大长度
  3. 【转】typedef函数指针的用法(C++)
  4. ESP32彩屏应用开源了https://github.com/wireless-tag-cn/lv_port_esp32
  5. 单例模式之懒汉式/饿汉式/结合二者之优的模式
  6. 线程池三种队列使用,SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue
  7. 新项目上传到码云托管
  8. 05-netty小例子
  9. python入门简单小程序
  10. Codeforces Beta Round #7 C. Line 扩展欧几里德
  11. 贼好理解,这个项目教你如何用百行代码搞定各类NLP模型
  12. java实现删除本地文件夹
  13. Java精品项目第33期前台展示+后台管理结合的在线购书系统
  14. ps怎么对比原图快捷键_PS图片调色常用快捷键,专为新手整理
  15. 30分钟看懂经济机器是如何运行的?
  16. outland服务器注册,Warmane TBC服(Outland)5月20日正式开服 规则介绍与问答
  17. MetroMusic音乐播放器开发心得
  18. 不填写内容用哪个斜杠代替_反斜杠
  19. Linux 绑定IP
  20. 网站颜色是怎么变成灰色的了

热门文章

  1. 模仿android谷歌地图功能开发记录
  2. Android 导入项目时出现错误的解决方法(红色感叹号)
  3. [转载]实现Application Tile 更新
  4. Linux日志选项详解及日志服务器的实现
  5. ASP.NET 初级开发成员面试题部分面试题
  6. sar分辨率公式_初识合成孔径雷达SAR
  7. 实施和开发哪个前景好_web前端与java后台开发哪个前景、待遇好?
  8. echart 多柱图只显示部分数据标签_2分钟上手、3小时学会无代码软件开发---Echarts数据可视化...
  9. Python网络爬虫笔记:下载、分析京东P20销售数据
  10. php正则替换%3cbr%3e_php利用正则替换过滤掉js(script)代码