您的位置:首页 > 其它

nyoj 19 擅长排列的小明

2016-11-20 10:32 232 查看
http://acm.nyist.net/JudgeOnline/problem.php?pid=19

数字的排列问题 字典序全部输出。

1.substr函数的作用是截取字符substr(a[2],a+n)截取从数组中第二个开始的向后n个的一段。如果是string s1定义的 可以使用substr(s1.begin(),s1.end());

2.next_permutation(s1.begin(),s1.end())作用是从第一个开始,一直向下枚举,例如:123 132 213 231 312 321 直到没有下一个,返回FALSE;

3.string 定义的S1,可以进行如下的操作。相当于直接在后面添加数字字符,不用for循环,比较方便。

for(i=1;i<=x;i++)

{

s1+=’0’+i;

}

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string>
using namespace std;
int main()
{
int i,t;
cin>>t;
while(t--)
{
int x,y;
string s1,s2;
cin>>x>>y;
for(i=1;i<=x;i++)
{
s1+='0'+i;
}
//cout<<s1<<endl;
s2=s1.substr(0,y);
cout<<s2<<endl;
while(next_permutation(s1.begin(),s1.end()))
{
if(s2!=s1.substr(0,y))
{
s2=s1.substr(0,y);
cout<<s2<<endl;
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: