poj_1166_枚举(或者递归/回溯)
2013-05-02 10:25
176 查看
题目描述:
给出九个闹钟。闹钟指向0-3-6-9四个点钟方向。有九个设定好的动作,分别指定对某几个闹钟正向拨动3点钟方向。输入给出九个闹钟初始指向,求用设定好的动作,最少用几组就能够把所有闹钟都拨到0点钟方向。
解题思路:
一开始想用回溯做。结果卡在用一个循环+回溯会导致重复计算之前做过的动作上。用枚举做,算了算只要最终结果move个数超过5,效率就比回溯高好多了。所以就用枚举,把指令简化成+1动作,点钟化为0-1-2-3。
第一次交pe了。注意输出………………回车的问题。
代码:
#include <stdio.h>
#include <stdio.h>
#define MAX 100000
int r[10][10] = {{0,0,0,0,0,0,0,0,0,0},
{0,1,1,0,1,1,0,0,0,0},{0,1,1,1,0,0,0,0,0,0},{0,0,1,1,0,1,1,0,0,0},
{0,1,0,0,1,0,0,1,0,0},{0,0,1,0,1,1,1,0,1,0},{0,0,0,1,0,0,1,0,0,1},
{0,0,0,0,1,1,0,1,1,0},{0,0,0,0,0,0,0,1,1,1},{0,0,0,0,0,1,1,0,1,1}};
int matrix[10], ind[10];
main()
{
int
i,i1,i2,i3,i4,i5,i6,i7,i8,i9;
int num,min=MAX,f;
for(i=1;i<=9;i++)
scanf("%d",&matrix[i]);
//枚举所有可能
for(i1=0;i1<=3
;i1++)
for(i2=0;i2<=3;i2++)
for(i3=0;i3<=3;i3++)
for(i4=0;i4<=3;i4++)
for(i5=0;i5<=3;i5++)
for(i6=0;i6<=3;i6++)
for(i7=0;i7<=3;i7++)
for(i8=0;i8<=3;i8++)
for(i9=0;i9<=3;i9++)
{
f=1;
i=1;
给出九个闹钟。闹钟指向0-3-6-9四个点钟方向。有九个设定好的动作,分别指定对某几个闹钟正向拨动3点钟方向。输入给出九个闹钟初始指向,求用设定好的动作,最少用几组就能够把所有闹钟都拨到0点钟方向。
解题思路:
一开始想用回溯做。结果卡在用一个循环+回溯会导致重复计算之前做过的动作上。用枚举做,算了算只要最终结果move个数超过5,效率就比回溯高好多了。所以就用枚举,把指令简化成+1动作,点钟化为0-1-2-3。
第一次交pe了。注意输出………………回车的问题。
代码:
#include <stdio.h>
#include <stdio.h>
#define MAX 100000
int r[10][10] = {{0,0,0,0,0,0,0,0,0,0},
{0,1,1,0,1,1,0,0,0,0},{0,1,1,1,0,0,0,0,0,0},{0,0,1,1,0,1,1,0,0,0},
{0,1,0,0,1,0,0,1,0,0},{0,0,1,0,1,1,1,0,1,0},{0,0,0,1,0,0,1,0,0,1},
{0,0,0,0,1,1,0,1,1,0},{0,0,0,0,0,0,0,1,1,1},{0,0,0,0,0,1,1,0,1,1}};
int matrix[10], ind[10];
main()
{
int
i,i1,i2,i3,i4,i5,i6,i7,i8,i9;
int num,min=MAX,f;
for(i=1;i<=9;i++)
scanf("%d",&matrix[i]);
//枚举所有可能
for(i1=0;i1<=3
;i1++)
for(i2=0;i2<=3;i2++)
for(i3=0;i3<=3;i3++)
for(i4=0;i4<=3;i4++)
for(i5=0;i5<=3;i5++)
for(i6=0;i6<=3;i6++)
for(i7=0;i7<=3;i7++)
for(i8=0;i8<=3;i8++)
for(i9=0;i9<=3;i9++)
{
f=1;
i=1;
相关文章推荐
- POJ 1166 枚举或者高斯消元
- poj The Settlers of Catan( 求图中的最长路 小数据量 暴力dfs搜索(递归回溯))
- (枚举初级+回溯)poj1753 Flip Game
- POJ 2488 A Knight's Journey 递归回溯题解
- POJ 1753 递归枚举
- POJ 1753 Flip Game (递归枚举)
- POJ 1753. Flip Game 枚举or爆搜+位压缩,或者高斯消元法
- poj 2718 dfs搜索或者枚举全排列
- POJ 1011 递归 &amp; 回溯
- 【转载】poj 1276 Cash Machine 【凑钱数的问题】【枚举思路 或者 多重背包解决】
- POJ 1753 Flip Game (递归枚举)
- POJ [ 分解因数 ]——递归练习+枚举
- 递归回溯 暴力枚举 (总结)
- poj算法-使用C语言在VC++6.0实现poj1753(递归枚举)
- 递归枚举,子集生成,排列生成,回溯都是解决解答树的方法
- 2018_1_23_poj_1011_sticks_枚举_递归_剪枝
- POJ 1753 Flip Game (递归枚举)
- 棋盘分割 错误账目(递归问题 枚举 回溯)
- 【深搜+回溯+枚举】poj 755 Flip Game
- POJ 1753 Flip Game (递归枚举)