在 C 中创建 n 个项目的所有可能的 k 个组合

新手上路,请多包涵

1n 有 n 个人。我必须编写一个代码来生成和打印 k 这些人的所有不同组合 n 。请解释用于此的算法。

原文由 Prannoy Mittal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 318
1 个回答

尝试这个:

 #include <iostream>
#include <string>
#include <vector>
using namespace std;

void combo(vector<char> &alphabet, int n, vector<string> &result, string curr) {
  if (n == 0) {
    result.push_back(curr);
    return;
  }
  for (int i = 0; i < alphabet.size(); i++) {
    combo(alphabet, n - 1, result, curr + alphabet[i]);
  }
  return;
}

int main() {
  //N items
  vector<char> alphabet = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n','o','p','q','r','s','t','u','v','w','x','y','z'};
  vector<string> result;
  //K is 4
  combo(alphabet, 4, result, "");


  for (auto s : result) {
    cout << s << endl;
  }
  return 0;
}

原文由 Fahim Ferdous 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题