袁愈权


私信TA

用户名:dotcpp0787148

访问量:240

签 名:

原神玩家不会轻易认输!

等  级
排  名 651
经  验 4046
参赛次数 3
文章发表 41
年  龄 19
在职情况 学生
学  校 贺州学院
专  业 网络工程

  自我简介:

本人原神,崩铁玩家。


解题思路:

注意事项:

参考代码:

#include <bits/stdc++.h>
using namespace std;
// 全局变量声明
int n, a[5], b[5], m = 0;
int g[5] = {0};
void dfs(int s) {
    // 如果递归深度达到4,输出当前排列组合
    if (s == 4) {
        for (int i = 0; i < s; i++) {
            cout << b[i]; // 输出当前排列组合的元素
        }
        cout << " "; // 输出空格分隔符
        m++; // 计数器加1
        // 如果计数器达到6,换行并重置计数器
        if (m == 6) {
            cout << endl;
            m = 0;
        }
        return; // 结束当前递归
    }
    // 遍历所有可能的元素
    for (int i = 0; i < 4; i++) {
        // 如果元素未被使用
        if (!g[i]) {
            b[s] = a[i]; // 将元素放入当前位置
            g[i] = 1; // 标记元素为已使用
            dfs(s + 1); // 递归调用,处理下一个位置
            g[i] = 0; // 回溯,取消标记
        }
    }
}
int main() {
    cin >> n; // 输入测试用例数量
    while (n--) {
        // 输入4个元素
        for (int i = 0; i < 4; i++) {
            cin >> a[i];
        }
        dfs(0); // 调用深度优先搜索函数,从第0层开始
        cout << endl; // 每个测试用例结束后换行
    }
    return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »