记录编号 |
393187 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2006]Jam的计数法 |
最终得分 |
100 |
用户昵称 |
JustWB |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.004 s |
提交时间 |
2017-04-10 09:36:12 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int s,t,w,all;
char zfc[30];
bool pan[30],p;
void dg(int now)
{
if(now==strlen(zfc)-1)
{
for(int i=(int)zfc[now-1]+1;i<=t;i++)
{
if(all==5)return;
zfc[now]=i;
printf("%s\n",zfc);
all++;
}
pan[zfc[now]-96]=1;
return;
}
if(all==5)return;
int lin=t-strlen(zfc)+now+1;
for(int i=(int)zfc[now-1]+1;i<=lin;i++)
{
if(all==5)return;
pan[zfc[now]-96]=0;
zfc[now]=i;
pan[zfc[now]-96]=1;
dg(now+1);
}
}
void xg(int now)
{
for(int i=(int)zfc[now]+1;i<=t;i++)
{
if(all==5)break;
if(!pan[i-96])
{
if(now+1==strlen(zfc))
{
pan[zfc[now]-96]=0;
zfc[now]=i;
pan[zfc[now]-96]=1;
cout<<zfc<<endl;
all++;
}
else
{
pan[zfc[now]-96]=0;
zfc[now]=i;
pan[zfc[now]-96]=1;
dg(now+1);
}
}
}
}
int main()
{
freopen("counting.in","r",stdin);
freopen("counting.out","w",stdout);
scanf("%d%d%d",&s,&t,&w);
s+=96;t+=96;
cin>>zfc;
for(int i=0;i<strlen(zfc);i++)
{
pan[(int)zfc[i]-96]=1;
}
for(int i=strlen(zfc)-1;i>=0;i--)
{
if(all==5)break;
xg(i);
}
return 0;
}