NYOJ 19 擅长排列的小明(dsf STL——next_permutation函数)
来源:互联网 发布:诱导交友app源码 编辑:程序博客网 时间:2024/05/20 06:41
擅长排列的小明
时间限制: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
有两种解法。
1,STL—next_permutation函数
#include<iostream>#include<algorithm>#include<string>using namespace std;int main(){int n,m,i,t;cin>>t;while(t--){cin>>n>>m;string s1,s2;//每次都要初始化 for(i=0;i<n;i++)s1+='0'+i+1;//将字符的每一位赋初值s2=s1.substr(0,m);//截取字符s1,从0到m的位置复制到s2cout<<s2<<endl;while(next_permutation(s1.begin(),s1.end()))//对s1进行全排列,从开头到接尾。s1.begin()开始s1.end()结尾 {if(s2!=s1.substr(0,m))//判断是否截取和排列后的前y是否一样{s2=s1.substr(0,m);cout<<s2<<endl;}}}return 0;}
2.dsf深搜。
无奈,表示还是不会做搜索题,一碰到就跪。抓狂ing。。。。
还好,经过几次看大牛代码,用Dev调试的经历。发现深搜递归就是一个不断深入,碰到特定的条件开始回溯或回溯后有不断深入的过程。这么说肯定不懂,因为老普当时也是这么跟我说的,我没懂。个人心得:学习递归时可以拷贝大牛代码,使用编译器调试,一步一步的看递归过程。(当然智商好的就不用了,人家一眼就看懂了)。
搜索题还需多练。
具体代码如下:
#include<stdio.h>bool sign[10];int a[10],n,m;void dfs(int k){int i;if(k==m){for(i=0;i<k;i++) printf("%d",a[i]);printf("\n");return;}for(i=1;i<=n;i++){if(!sign[i]){a[k]=i;sign[i]=1;dfs(k+1);sign[i]=0;}}}int main(){int t,i;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(i=1;i<=n;i++) sign[i]=0;dfs(0);}return 0;}
1 0
- NYOJ 19 擅长排列的小明(dsf STL——next_permutation函数)
- NYOJ 19 擅长排列的小明 (STL之next_permutation()的使用)
- NYOJ--19--next_permutation()--擅长排列的小明
- nyoj 19 擅长排列的小明 【next_permutation() 】
- NYOJ 19 擅长排列的小明(排列 dfs /STL)
- NYOJ19 擅长排列的小明【next_permutation】
- 擅长排列的小明(next_permutation)
- NYOJ 19 擅长排列的小明
- NYOJ 19-擅长排列的小明
- nyoj 19 擅长排列的小明
- nyoj 19 擅长排列的小明
- nyoj-19-擅长排列的小明
- nyoj 19 擅长排列的小明
- nyoj 19【擅长排列的小明】
- NYOJ 19 擅长排列的小明
- NYOJ 19(擅长排列的小明)
- NYOJ---19擅长排列的小明
- nyoj 19 擅长排列的小明
- 解读Cardinality Estimation算法(第四部分:HyperLogLog Counting及Adaptive Counting)
- Spyder常用环境working directory设置
- TCP 组播 广播
- Android 启动简述
- 计算几何基本知识整理
- NYOJ 19 擅长排列的小明(dsf STL——next_permutation函数)
- 孤儿进程和僵尸进程
- 从cgroup_init_early函数学习cgroup——框架
- 加班~~~第二天之自定义UIPageControl控件
- POJ 3041(最小点覆盖)
- 二十岁出头的时候上,你一无所有,你拥有一切
- awk条件语句
- Spiral Matrix
- 网站发送邮件及群发的两种方法