给你一个长度为 n 的数组,数字 0 到 n 有一个数字不在数组中,找出这个数字并输出这个数字。
输入格式
第一行一个整数 n,表示数组大小。
第二行 n 个整数,分别用空格隔开,表示数组元素。
输出格式
一个整数。
输入输出样例1
输入
3
0 1 2
输出
3
提示
1≤n≤10
//代码如下:
//使用回溯算法解决,回溯算法的运行方向递归的运行方向相反
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define MAX_N 10
int n;
bool st[MAX_N];
vector<int> temp;
vector<int> num;
void print(vector<int> temp){
for(int i=0;i<temp.size();i++)
cout<<temp[i]<<" ";
cout<<endl;
}
//深度优先搜索中使用回溯算法
void dfs(int index){
//index表示已经选择了多少个数字
if(index==n){
if(temp==num){
for(int j=0;j<=n;j++){
if(!st[j]){
cout<<j<<endl;
return;//回溯算法
}
}
}
return;
}
for(int i=0;i<=n;i++){
if(!st[i]){
st[i]=true;
temp.push_back(i);
dfs(index+1);//递归算法
temp.pop_back();
st[i]=false; }}}
int main(){
cin>>n;
//存储数组
for(int i=0;i<n;i++){
int number;
cin>>number;
num.push_back(number);
}
dfs(0);
return 0;
}