GESP三级:扑克牌组合算法详解及代码实现

题目描述:

小明从一副扑克牌中(没有大小王,J认为是数字11,Q是12,K是13,A是1)抽出2张牌求和,请问能够组合出多少个不相等的数,按照由小到大输出这些数。(5.1.98)

输入描述:

第一行是一个整数n代表(n<=52)扑克牌的总数量

第二行的n个整数分别代表扑克牌的数值

输出描述:

第一行是一个整数m代表组合出不相等的数字个数。

第二行m个数用空格隔开代表这m个由小到大排序的不相等的数。

用例输入 1:

43 1 2 4

用例输出 1:

53 4 5 6 7

算法思路:

  1. 将扑克牌的数值保存到数组中。2. 使用两层循环,遍历所有可能的组合。3. 将每个组合的和保存到一个集合中,集合会自动去重。4. 最后,将集合中的数字按照从小到大的顺序输出即可。

**代码实现:**cpp#include #include #include #include using namespace std;

int main() { int n; cin >> n; vector cards(n); for (int i = 0; i < n; i++) { cin >> cards[i]; } set sums; for (int i = 0; i < n; i++) { for (int j = i+1; j < n; j++) { sums.insert(cards[i] + cards[j]); } } cout << sums.size() << endl; for (int num : sums) { cout << num << ' '; } cout << endl; return 0

GESP三级:扑克牌组合算法详解及代码实现

原文地址: https://www.cveoy.top/t/topic/qm6F 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录