POJ 2245 Lotto C++版
题目链接:http://poj.org/problem?id=2245
解释下题意,给出一个最多13个数的序列,从其中抽出6个数,输出所有的可能序列,按顺序输出。
查了一些资料,最好的方法就是DFS了,平时自己独立做DFS少,就当练习下了。其实我更觉得这样的是简单的递归,也不全算DFS吧。
我的思路是这样的每个数有两种情况,也就是取它和不取它,定义一个函数void dfs(int d,int p),其中d代表已经取的数目,p代表查看过的数目!这样针对每个情况我们调用两次,分别是取它和不取它,标准dfs其实在取它算完后应该回溯到原样,但是不取它会覆盖这一条数据,也就省了这一步了。
这个题我在结束条件上纠结了下,现开始我用的d==6然后最后一列就不正确了,其实我自己有时利用数组的a[1]做第一个数据,就会总犯一些错误,一些细节的把握不好,最近做题都没有用调试,1是不方便在linux下用,2是递归调试麻烦!
代码不长,因为最近在做短代码的题,代码如下:
1 | /*Problem: 2245 User: awq123 |