1497748267


私信TA

用户名:1497748267

访问量:16145

签 名:

学校比赛,刷题走起

等  级
排  名 1329
经  验 2971
参赛次数 1
文章发表 25
年  龄 0
在职情况 学生
学  校 重庆邮电大学移通学院
专  业

  自我简介:

TA的其他文章

解题思路:

第一步:在当前Jam数bdfij中,从后往前找,找到第一个“后继字母没出现在当前Jam数中”的字母。j的后继是k,不可用,i的后继j已出现在Jam数中,f的后继字母g没出现,所以是f;


第二步:将找到的字母用后继字母替换。用后继字母g替换f;


第三步:在当前Jam数中将该字母后面的所有字母全部去掉,替换成最小的字符。g后面的ij全部去掉,换成g字母后面最小的字母hi。这样,当前Jam数bdfij之后那个数是bdghi*/



注意事项:

参考代码:

#include<iostream>
using namespace std;
int main()
{
	char f;
	char v[30];
	int s, t, w, sum = 0, flag = 0, cnt = 0;
	int i, j;
	cin >> s >> t >> w;
	for (int i = 1; i <= w; i++)
	{
		cin >> v[i];
	}
	v[w + 1] = '\0';
	while (true)
	{
		if (cnt == 5)
			break;
		for (i = w; i >= 1; i--)
		{
			flag = 0;
			f = v[i] + 1;
			if (f > 'a' + t - 1)
				continue;
			for (j = 1; j <= w; j++)
			{
				if (f == v[j])
				{
					flag = 1;
					break;
				}
			}
			if (flag == 1)
			{
				continue;
			}
			int c = 0;
			for (j = i; j <= w; j++)
			{
				v[j] = f + c;
				c++;
			}
			if (v[w] <= 'a' + t - 1)
			{
				for (i = 1; i <= w; i++)
					cout << v[i];
				cout << endl;
				cnt++;
				break;
			}
		}
	}
	return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »