zoukankan      html  css  js  c++  java
  • USACO 1.41 The clocks

    哎,纠结了那么久,终于过了,本来很直接的想到了BFS,可是怎么纠结也过不了,orz……

    还是用DFS了,嘿嘿,一开始好囧,没注意到,其实每一种方法最多只能走四次,走四次就回到初始状态了;

    DFS的过程比较好理解,从第一种方法开始,枚举这种方法走到次数,接着第二种方法,…………,这样,知道 第九种方法,再判断是否满足条件……

    /*
    ID: nanke691
    LANG: C++
    TASK: clocks
    */
    #include<iostream>
    #include<algorithm>
    #include<fstream>
    #include<string.h>
    using namespace std;
    int dir[9][9]={{3,3,0,3,3,0,0,0,0},{3,3,3},{0,3,3,0,3,3},{3,0,0,3,0,0,3},{0,3,0,3,3,3,0,3},
                   {0,0,3,0,0,3,0,0,3},{0,0,0,3,3,0,3,3},{0,0,0,0,0,0,3,3,3},{0,0,0,0,3,3,0,3,3}};
    int ans[9];
    int clock1[9];
    int bestmove;
    void dfs(int *move ,int k)
    {
    	if(k==9)
    	{
    		for(int i=0;i<9;i++)
    			if(clock1[i]%12!=0)
    				return ;
    		int cnt=0;
    		for(int i=0;i<9;i++)
    			cnt+=move[i];
    		if(bestmove==0 || cnt<bestmove)//比较,记录步数最少的
    		{
    			bestmove=cnt;
    			for(int i=0;i<9;i++)
    				ans[i]=move[i];
    			return ;
    		}
    	}
    	for(int rep=3;rep>=0;rep--)
    	{
    		for(int i=0;i<rep;i++)
    		{
    			for(int j=0;j<9;j++)
    			clock1[j]+=dir[k][j];
    		}
    		move[k]=rep;
    		dfs(move,k+1);
    		for(int i=0;i<rep;i++)//还原
    			for(int j=0;j<9;j++)
    				clock1[j]-=dir[k][j];
    	}
    }
    int main()
    {
    	int move[9];
    	freopen("clocks.in","r",stdin);
    	freopen("clocks.out","w",stdout);
    	for(int i=0;i<9;i++)
    		scanf("%d",&clock1[i]);
    	bestmove=0;
    	memset(ans,0,sizeof(ans));
    	dfs(move,0);
    	char *s="";
    	for(int i=0;i<9;i++)
    	{
    		for(int j=0;j<ans[i];j++)
    		{
    			printf("%s%d",s,i+1);
    		    s=" ";
    		}
    	}
    	printf("\n");
    }
    
  • 相关阅读:
    Linux下高并发socket最大连接数所受的各种限制
    Oracle DB 使用资源管理
    Oracle DB 资源管理
    C++ 封装私有堆(Private Heap)
    用宏实现 C++ Singleton 模式
    基于 crt debug 实现的 Windows 程序内存泄漏检测工具
    如何养成良好的 C++ 编程习惯 —— 内存管理
    OCP-1Z0-053-V12.02-643题
    Oracle DB 通过SQL 优化管理性能
    OCP-1Z0-052-V8.02-141题
  • 原文地址:https://www.cnblogs.com/nanke/p/2217466.html
Copyright © 2011-2022 走看看