AtCoder 46-リモコン(搜索)

题意翻译:

题目描述: 高桥君要调整空调的设定温度。现在的设定温度是A度,而他想调到B度。 空调遥控器按一次可以:

  • 上调或下调1度
  • 上调或下调5度
  • 上调或下调10度 高桥君想求出从A调到B度的最小操作数。

输入格式: 输出以下列形式给出。

A B

0<=A,B<=40

输出格式: 输出最小操作数。

样例与说明:

样例1: 输入:

7 34

输出:

5

依次上调10、10、5、1、1度即可

样例2: 输入:

19 28

输出:

2

上调10度、下调1度即可。

样例3: 输入:

10 10

输出:

0

温度一样时无需调整。

AC Code: 

//心血来潮,这次不写万能头,回忆一下C语言吧!!! 
#include
#include
#include
#define min(a,b) a=num) {//剪枝,大于等于最小次数,直接结束 
		return ;
	}
	if(begin==end) {//调到需要的温度 
		num=min(num,step);//修改调节次数为最小 
		return ;
	}else if(begin>end) {//比需要的温度高,就向下调 
		dfs(begin-1,step+1);
		dfs(begin-5,step+1);
		dfs(begin-10,step+1);
	}else {//比需要的温度低,就向上调 
		dfs(begin+1,step+1);
		dfs(begin+5,step+1);
		dfs(begin+10,step+1);
	}
}
int main() {
	scanf("%d %d",&begin,&end);//起始温度,需要温度 
	dfs(begin,0);
	printf("%d\n",num);
	return 0;
}

你可能感兴趣的:(#,DFS+BFS,#,模拟)