问题描述
我正在编写一个程序,该程序创建具有 x 个不同值的长度为 n 的字符串,但是要求创建的字符串应具有最低的 ascii sum ,我的代码创建了具有 x 个不同值的 n 长度字符串,但它不会创建最低的 ascii 值字符串,需要帮助,我做错了什么
int main()
int n,x;
int p= 97;
cin>>n;
cin>>x;
if (n<x || x==1){
cout<< "00";
}
else {
for(int j = 0; j<n ; j++)
{
char ans = (char)(p+(j%x));
cout << ans;
}
}
return 0;
}
解决方法
如果你需要有 x
不同的字符但需要最低的 ASCII 值字符串,你需要做一个简单的观察:贪婪地插入尽可能多的 'a'(n-x+1
,精确的)。由于您需要除 'a' 之外的 x-1
个不同字符,请按顺序插入 'b'、'c' 等。
这个怎么样?
char ans = (char)(p + (j % 26));