解题思路:先找到jam数的规律: 如果长度为三,只用abcde五个字母,并用12345代替,则所有数为123 124 125 134 135 145 234 235 245 345 即 abc abd abe acd ace ade bcd bce bde cde;
所以要找到下一个数,需要从最右边一位看(把上述abcde叫做字母组), 如果不是字母组中最后一个,则最右边一位加1即可 , 如果是字母组中最后一个,则看右边数第二位,如果不是字母组中倒第二个,则此一位加1,最后一位改成倒第二位加1,以此类推......
下面两个函数 have判断是否存在下一个jam数, coutnext输出下一个jam数
注意事项:
参考代码:
#include<iostream>
using namespace std;
bool have(char jam[],char last[],int w);
void coutnext(char jam[],int t,int w);
int main()
{
int s,t,w;
cin>>s>>t>>w;
char jam[26];
cin>>jam;
char last[26]= {'\0'};
for(int i=0; i<w; i++)
{
last[i]='a'+t-w+i;
}
int n=0;
while(have(jam,last,w) && n<5)
{
coutnext(jam,t,w);
n++;
}
return 0;
}
bool have(char jam[],char last[],int w)
{
for(int i=0; i<w; i++)
{
if(jam[i]!=last[i])
{
return true;
}
}
return false;
}
void coutnext(char jam[],int t,int w)
{
for(int i=w-1; i>=0; i--)
{
if(jam[i]-'a'<t-w+i)
{
jam[i]++;
for(int j=i; j<w; j++)
{
jam[j]=jam[i]+(j-i);
}
break;
}
}
cout<<jam<<endl;
}
0.0分
2 人评分
数列 (C++代码)浏览:707 |
2005年春浙江省计算机等级考试二级C 编程题(3),复杂度最低的方法没有之一!!!!!浏览:856 |
C语言训练-立方和不等式 (C语言代码)浏览:779 |
C语言程序设计教程(第三版)课后习题9.1 (Java代码)浏览:481 |
【绝对值排序】 (C语言代码)浏览:832 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:564 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:669 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:541 |
WU-格式化数据输出 (C++代码)浏览:1313 |
1012题解浏览:938 |