原题链接: 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;
}