1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int arr[10100]; // 存储输入的扑克牌数值 int sum[10000]; // 存储所有两张牌的求和结果 int main(){ int n; // [1] 输入的扑克牌数量 cin >> n; // [2] 输入所有扑克牌的数值 for(int i = 0; i < n; i++) cin >> arr[i]; int x = 0; // [3] sum数组的索引,记录已存储的和的数量 // [4] 双重循环:遍历所有两张牌的组合,计算和并存入sum数组 for(int i = 0; i < n; i++){ for(int j = i + 1; j < n; j++){ sum[x] = arr[i] + arr[j]; x++; } } // [5] 对所有和进行升序排序 sort(sum, sum + x); int sun = 1; // [6] 统计不重复和的数量,初始为1(至少有一个和) // [7] 遍历排序后的和数组,统计不重复的数量 for(int i = 1; i < x; i++){ // 当前和与前一个不同,说明是新的不重复值 if(sum[i] != sum[i-1]) sun++; } // [8] 输出不重复和的数量 cout << sun << endl << sum[0] << " "; // [9] 输出所有不重复的和 for(int i = 1; i < x; i++){ if(sum[i] != sum[i-1]) cout << sum[i] << " "; } return 0; }
- 1
信息
- ID
- 1196
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者