题目大意:有一个命理学家,要求你输出一个满足一系列规则的字符串,要求满足规则如下:

1.长度为N

2.元音字母和辅音字母的和要最小

3.元音放在奇数位,辅音放在偶数位

4.同一个元音字母最多出现21个,同一个辅音最多出现5次

5.要求字典序达到最小

解题思路:看代码

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char v[10] = {'A','U','E','O','I'};
char c[21] = {'J','S','B','K','T','C','L','D','M','V','N','W','F','X','G','P','Y','H','Q','Z','R'};
int main() {
	int test,mark = 1,N;
	scanf("%d",&test);
	while(test--) {
		scanf("%d",&N);
		char temp[2][300];
		memset(temp,'\0',sizeof(temp));
		int cnt1 = 0,cnt2 = 0;	
		for(int i = 0; i < N; i++) 
			if(i % 2 == 0) {
				temp[0][cnt1] = v[cnt1/21];
				cnt1++;	
			}
			else{ 
				temp[1][cnt2] = c[cnt2/5];
				cnt2++;
			}
		sort(temp[0],temp[0] + cnt1);
		sort(temp[1],temp[1] + cnt2);
		cnt1 = cnt2 = 0;
		printf("Case %d: ",mark++);
		for(int i = 0; i < N; i++)
			if(i % 2 == 0)
				printf("%c",temp[0][cnt1++]);
			else
				printf("%c",temp[1][cnt2++]);
		printf("\n");

	}
	return 0;
}