如何打印出其他可能性中ascii 总和最低的字符串

问题描述

我正在编写一个程序,该程序创建具有 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));