云南网站seo服务,云南科技有限公司,十大免费自媒体素材网站,网站 解决负载从 1∼n1∼n 这 nn 个整数中随机选取任意多个#xff0c;输出所有可能的选择方案。
输入格式
输入一个整数 nn。
输出格式
每行输出一种方案。
同一行内的数必须升序排列#xff0c;相邻两个数用恰好 11 个空格隔开。
对于没有选任何数的方案#xff0c;输出空行。
本…从 1∼n1∼n 这 nn 个整数中随机选取任意多个输出所有可能的选择方案。
输入格式
输入一个整数 nn。
输出格式
每行输出一种方案。
同一行内的数必须升序排列相邻两个数用恰好 11 个空格隔开。
对于没有选任何数的方案输出空行。
本题有自定义校验器SPJ各行不同方案之间的顺序任意。
数据范围
1≤n≤151≤n≤15
输入样例
3输出样例
3
2
2 3
1
1 3
1 2
1 2 3
#includeiostream
#includecstdio
#includealgorithm
using namespace std;const int N16;
int n;
int st[N]; //记录当前位置的状态0表示还没考虑1表示选他2表示不选他void dfs(int u){if(un){for(int i1;in;i)if(st[i]1)printf(%d ,i);printf(\n);return ;}st[u]2;dfs(u1);st[u]0;st[u]1;dfs(u1);st[u]0;
}int main(){cinn;dfs(1);return 0;
}
记录路径
#includeiostream
#includecstdio
#includealgorithm
using namespace std;const int N16;
int n;
int st[N]; //记录当前位置的状态0表示还没考虑1表示选他2表示不选他
int ways[115][16],cnt;void dfs(int u){if(un){for(int i1;in;i)if(st[i]1)ways[cnt][i]i;cnt;return ;}st[u]2;dfs(u1);st[u]0;st[u]1;dfs(u1);st[u]0;
}int main(){cinn;dfs(1);for(int i0;icnt;i){for(int j1;jn;j) printf(%d,ways[i][j]);puts();}return 0;
} #includeiostream
#includecstdio
#includealgorithm
#includevector
using namespace std;const int N16;
int n;
int st[N]; //记录当前位置的状态0表示还没考虑1表示选他2表示不选他
vectorvectorint ways;void dfs(int u){if(un){vectorint way;for(int i1;in;i)if(st[i]1)way.push_back(i);ways.push_back(way); return ;}st[u]2;dfs(u1);st[u]0;st[u]1;dfs(u1);st[u]0;
}int main(){cinn;dfs(1);for(int i0;iways.size();i){for(int j0;jways[i].size();j) printf(%d,ways[i][j]);puts();}return 0;
}