牛客2021跨年赛K题

152 阅读1分钟

原题链接: ac.nowcoder.com/acm/contest…

这题思路并不难 主要考验的是 对桶排序的运用是否熟练(尤其是带着字母的桶

这里直接给出代码

#include <iostream>

using namespace std;
int q[1000005][8];//代表的是 前面是标号n 后面的是每个字母的桶
int a[120];//用于给桶标识 放的是ASCII
int main()
{
	string s = "happynewyear";
	int n;
	cin >> n;
	
        a['a'] = 0;
        a['e'] = 1;
        a['h'] = 2;
        a['n'] = 3;
        a['p'] = 4;
        a['r'] = 5;
        a['w'] = 6;
        a['y'] = 7;
    
	int now = 1;
	for(int i = 1; i <= n; i++)
	{
		q[now % n][ a[ s[j] ] ]++;//对桶的应用 s[i]是字符  a[字符] = 对应数字
		now ++;//记得取余
	}
	
	int nn = -1, ans = 0;
	for(int i = 1; i <= n; i++)//循环每个标号
	{
		int temp = 0;//累加值
		for(int j = 0; j < 8; j++)	temp += q[i][j]/2;//j是遍历q中的字母桶
		if( temp > nn )		nn = temp, ans = i;
	}
	cout << ans;
	return 0;
}