NYOJ-19 擅长排列的小明
来源:互联网 发布:淘宝优惠券怎么成代理 编辑:程序博客网 时间:2024/05/20 14:18
擅长排列的小明
时间限制:1000 ms | 内存限制:65535 KB
难度:4
- 描述
- 小明十分聪明,而且十分擅长排列计算。比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难他,在这5个数字中选出几个数字让他继续全排列,那么你就错了,他同样的很擅长。现在需要你写一个程序来验证擅长排列的小明到底对不对。
- 输入
- 第一行输入整数N(1<N<10)表示多少组测试数据,
每组测试数据第一行两个整数 n m (1<n<9,0<m<=n) - 输出
- 在1-n中选取m个字符进行全排列,按字典序全部输出,每种排列占一行,每组数据间不需分界。如样例
- 样例输入
23 14 2
- 样例输出
123121314212324313234414243
思路分析:DFS + 回溯,注意每个数字只能选一次。用visit数组做访问标记,vector数组填充
#include <cstdio>#include <string>#include <vector>using namespace std;int a[10];int visit[10];vector<int> vec;void dfs( int n, int curM ) { if( curM == 0 ) { for( int i = 0; i < vec.size(); i++ ) { printf( "%d", vec[i] ); } printf( "\n" ); } for( int i = 0; i < n; i++ ) { if( visit[i] ) continue; visit[i] = 1; vec.push_back( i + 1 ); dfs( n, curM - 1 ); vec.pop_back(); visit[i] = 0; }}int main() { int k; scanf( "%d", &k ); int n, m; while( k-- ) { scanf( "%d%d", &n, &m ); fill( visit, visit + 10, 0 ); for( int i = 0; i < n; i++ ) { a[i] = i + 1; } dfs( n, m ); } return 0;}
0 0
- NYOJ 19 擅长排列的小明
- NYOJ 19-擅长排列的小明
- nyoj 19 擅长排列的小明
- nyoj 19 擅长排列的小明
- nyoj-19-擅长排列的小明
- nyoj 19 擅长排列的小明
- nyoj 19【擅长排列的小明】
- NYOJ 19 擅长排列的小明
- NYOJ 19(擅长排列的小明)
- NYOJ---19擅长排列的小明
- nyoj 19 擅长排列的小明
- NYOJ 19 擅长排列的小明
- nyoj-19-擅长排列的小明
- NYOJ 19 擅长排列的小明
- NYOJ--19--擅长排列的小明
- NYOJ 19 擅长排列的小明
- NYOJ 19 擅长排列的小明
- nyoj 19 擅长排列的小明
- nyoj 255 C小加 之 随机数
- 简化DB2 9.7的安全模型
- 介绍几种redis数据超过可用内存的处理方式
- docker 扫盲
- linux命令:gunzip
- NYOJ-19 擅长排列的小明
- 2016-11-24
- 最短路径(3)--poj2253(Dijkstra变形题)
- Talloc内存池使用教程——(2)过继一个talloc context
- php源码之路第七章第二节 (语法的实现之语法解析)
- Spark2.0.1 on yarn with hue 集群安装部署(七)livy安装测试
- cpio命令文件备份和恢复
- 直接插入排序
- Java中随机生成字符串