2006 NOIP 普及組 NOIP2006 3.Jam的計數法
作法:(1)利用void叫出所有組合(2)還沒想到
想法:先說 我的做法沒有很好
當組合剛好到的時候 進行輸出 當超過5個時就RETURN
/************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int input[27]={0};
int s,t,w;
int way[27]={0},time=0,flag=0;
void make (int now,int num)
{
int a,b;
for(a=num;a<=t;a++)
{
way[now]=a;
if(flag==1&&now==w-1&&time<5)
{
time++;
for(b=0;b<w;b++)
printf("%c",way[b]+'a'-1);
printf("\n");
}
if(flag==0&&now==w-1)
{
for(b=0;b<w;b++)
if(way[b]!=input[b]) break;
if(b==w) flag=1;
}
if(now+1<=w-1)
make(now+1,a+1);
if(time==5) return;
}
}
main()
{
char x[27]={0};
while(scanf("%d %d %d",&s,&t,&w)==3)
{
scanf("%s",x);
time=0;
flag=0;
int a,b,n=strlen(x);
for(a=0;a<n;a++)
input[a]=x[a]-'a'+1;
make(0,s);
}
return 0;
}