解题思路:
我解释我提供给豆包的思路:
不能重复,所以我想使用set容器
set容器,我当时寻思着放int类型的元素,然后一个个拆出来输出,豆包直接使用string类型
输出3个数字,所以我感觉是3个for循环,然后我习惯i=0 ,i++
注意事项:
参考代码:
#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
// 将三个数字组合成一个字符串,用于后续在set中去重
string getCombinationStr(int a, int b, int c) {
string str = "";
int arr[] = {a, b, c};
sort(arr, arr + 3);
for (int num : arr) {
str += to_string(num) + " ";
}
return str;
}
int main() {
int nums[4] = {0};
for ( int i = 0 ; i < 4 ; i ++ ) cin >> nums[i] ;
int arr[3];
set<string> combinationSet; // 用于存储不重复的组合字符串
// 生成所有三个不同数字的组合
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 4; ++j) {
if (j == i) continue;
for (int k = 0; k < 4; ++k) {
if (k == i || k == j) continue;
// 存储当前组合
arr[0] = nums[i];
arr[1] = nums[j];
arr[2] = nums[k];
string combinationStr = getCombinationStr(arr[0], arr[1], arr[2]);
// 如果当前组合字符串不在set中,则进行全排列并输出
if (combinationSet.find(combinationStr) == combinationSet.end()) {
combinationSet.insert(combinationStr);
do {
cout << arr[0] << " " << arr[1] << " " << arr[2] << endl;
} while (next_permutation(arr, arr + 3));
}
}
}
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复