DFS
#include <bits/stdc++.h>
using namespace std;
void dfs(int x/*定义递归所需参数*/){
if(/*结束条件成立*/){
//记录结果
//其他...
return;
}
//剪枝(可选)
for(/*枚举扩展状态*/){
//如果可行,就递归下去
dfs(newx);
//回溯(根据题目需要决定)
}
}
int main(){
dfs();
return 0;
}
BFS
#include <bits/stdc++.h>
using namespace std;
struct stu{
int x,y;
//如果是二维,就定义 x,y
//如果是一维,就定义 x
//如果求最短路径,就定义 step记录步数
};
void bfs(){
//初始化部分
queue<stu> q;//建队
q.push();//初始状态入队
//起点打标记(根据题目需要决定)
//其他...
while(!q.empty()){//只要队列不为空
stu fr=q.front;//取出队首
q.pop();//弹首
//判断结束条件(根据题目需要决定) ,符合就结束BFS
//剪枝(可选)
for(/*枚举扩展状态*/){
//记忆化,打标记(根据题目需要决定)
q.push();//入队
//其他...
}
cout<<"No Answer!";//能运行到这说明没有符合条件的数(可选)
}
}
int main(){
bfs();
return 0;
}