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;
}