解题思路:

我解释我提供给豆包的思路:

不能重复,所以我想使用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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论