解题思路:
注意事项:
参考代码:
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
vector<int> vec(4, 0);// 用户输入数组
vector<int> outputVec(4,0);// 屏幕输出数组
vector<int> vecFlag(vec.size(), false);// 对应用户输入数组的标志位,是否已经排入输出队列
void dfs(int currentId, int pos)// deep first search深度优先遍历算法
{
if(currentId == vec.size() - 1)// 等于输入长度,表示输出队列已经形成
{
for(int i = 0; i < vec.size() - 1; ++i)
{
cout << outputVec[i] << " ";
}
cout << endl;
return;// 避免执行后面代码,提高效率
}
for(int i = 0; i < vec.size(); ++i)
{
if(vecFlag[i] == false && i != pos)
{
vecFlag[i] = true;
outputVec[currentId] = vec[i];// 添加到输出内容
dfs(currentId + 1, pos);// 递归
vecFlag[i] = false;// 递归完后解除该位的判定条件
}
}
}
int main()
{
for(int i = 0; i < 4; ++i)
{
cin >> vec[i];
}
for(int i = 0; i < vec.size(); ++i)
{
dfs(0, 4-i-1);
}
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:524 |
简单的a+b (C语言代码)浏览:827 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:627 |
简单的a+b (C语言代码)浏览:593 |
时间转换 (Java代码)浏览:617 |
A+B for Input-Output Practice (C++代码)浏览:632 |
回文串 (C语言代码)浏览:3095 |
ASCII帮了大忙浏览:797 |
兰顿蚂蚁 (C++代码)浏览:1159 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:504 |