记录编号 393187 评测结果 AAAAAAAAAA
题目名称 [NOIP 2006]Jam的计数法 最终得分 100
用户昵称 GravatarJustWB 是否通过 通过
代码语言 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;
}