zoukankan      html  css  js  c++  java
  • uva-141-枚举

    旋转过程的下标变化,画个2x2的表格,模拟就可以出来了

    #include <string>
    #include<iostream>
    #include<map>
    #include<memory.h>
    #include<vector>
    #include<algorithm>
    
    
    namespace cc
    {
    	using std::cout;
    	using std::endl;
    	using std::cin;
    	using std::map;
    	using std::vector;
    	using std::string;
    	using std::sort;
    
    
    	constexpr int N = 51;
    
    	map<string, int> status;
    	int board[N][N];
    
    	int n;
    	string toString(int b[][N]) 
    	{
    		string str = "";
    		for (int i=1;i<=n;i++) 
    		{
    			for (int j=1;j<=n;j++) 
    			{
    				str += std::to_string(b[i][j]);
    			}
    		}
    		return str;
    	
    	}
    
    	string xuanzhuan(int i) 
    	{
    		int temp[N][N];
    		if (i == 0)
    		{
    			//顺时针90度
    			for (int i = 1, k = n; i <= n; i++, k--) 
    				for (int j = 1; j <= n; j++)
    					temp[j][k] = board[i][j];
    			return toString(temp);
    		}
    		else if (i==1) 
    		{
    			for (int i = 1, k = n; i <= n; i++, k--)
    				for (int j = 1; j <= n; j++)
    					temp[j][k] = board[i][j];
    		  // 180
    			int temp2[N][N];
    			for (int i = 1, k = n; i <= n; i++, k--)
    				for (int j = 1; j <= n; j++)
    					temp2[j][k] = temp[i][j];
    			return toString(temp2);
    		}
    		else if (i==2) 
    		{
    			 
    			for (int i = 1; i <= n; i++)//逆时针90度
    				for (int j = 1, k = n; j <= n; j++, k--)
    					temp[k][i] = board[i][j];
    			return toString(temp);
    		}
    		
    	
    	}
    
    	void solve()
    	{
    		while (cin>>n&&n) 
    		{
    			memset(board,0,sizeof(board));
    			status.clear();
    			int r, c;
    			char op;
    			int ok = 0;
    			int play = 1;
    			int step = 0;
    			for (int i=1;i<=2*n;i++) 
    			{
    				cin >> r >> c >> op;
    				if (op=='-') 
    				{
    					//nazou
    					board[r][c] = 0;
    				}
    				else 
    				{
    					board[r][c] = 1;
    				}
    				if(ok==0)
    				{
    					step=i;
    					play = i;
    					string str = "";
    					str = xuanzhuan(0);
    					if (ok==0&&status[str] == 1)
    					{
    						ok = 1;
    					}
    					str = xuanzhuan(1);
    					if (ok == 0 && status[str] == 1)
    					{
    						ok = 1;
    					}
    					str = xuanzhuan(2);
    					if (ok == 0 && status[str] == 1)
    					{
    						ok = 1;
    					}
    					str = toString(board);
    					if (ok == 0 && status[str] == 1)
    					{
    						ok = 1;
    					}
    					status[str] = 1;
    				}
    			}
    			if (ok == 0)
    			{
    				cout << "Draw" << endl;
    			}
    			else 
    			{
    				cout << "Player " << (play % 2+1) << " wins on move " << step << endl;
    			}
    		}
    	}
    
    };
    
    
    int main()
    {
    
    #ifndef ONLINE_JUDGE
    	freopen("d://1.text", "r", stdin);
    #endif // !ONLINE_JUDGE
    	cc::solve();
    
    	return 0;
    }
    

      

  • 相关阅读:
    nginx防止域名被恶意指向
    sphinx增量索引
    nginx根据IP限制访问
    centos 下使用locate命令
    centos安装启动telnet服务
    更换阿里云YUM源
    只有IE64位浏览器能上网,其他QQ、FF、CHROME都上不了网的问题
    php合并图片
    coreseek3.2.14全文搜索引擎安装使用
    jw player+nginx搭配流媒体播放器
  • 原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/9906361.html
Copyright © 2011-2022 走看看