zoukankan      html  css  js  c++  java
  • 数组-12. 简易连连看(20)

    本题要求实现一个简易连连看游戏模拟程序。

    给定一个2Nx2N的方阵网格游戏盘面,每个格子中放置一些符号。这些符号一定是成对出现的,同一个符号可能不止一对。程序读入玩家给出的一对位置(x1, y1)、(x2, y2),判断这两个位置上的符号是否匹配。如果匹配成功,则将两个符号消为“*”并输出消去后的盘面;否则输出“Uh-oh”。若匹配错误达到3次,则输出“Game Over”并结束游戏。或者当全部符号匹配成功,则输出“Congratulations!”,然后结束游戏。

    输入格式:

    输入在一行中给一个正整数N(<5)。随后2N行,每行2N个大写英文字母(其间以1个空格分隔),表示游戏盘面。盘面之后给出一个正整数K,随后K行,每行按照格式“x1 y1 x2 y2”给出一个玩家的输入。注意格子的行、列编号是从1到2N。

    输出格式:

    根据玩家的每一步输入,输出相应的结果。输出盘面时注意,每行字符间以1个空格分隔,行末不得有多余空格。

    输入样例1:

    2
    I T I T
    Y T I A
    T A T Y
    I K K T
    11
    1 1 1 3
    4 2 4 3
    3 1 4 2
    2 2 1 2
    3 1 2 4
    4 4 3 1
    2 1 3 4
    3 3 1 4
    4 1 2 3
    2 4 3 2
    1 1 2 2
    

    输出样例1:

    * T * T
    Y T I A
    T A T Y
    I K K T
    * T * T
    Y T I A
    T A T Y
    I * * T
    Uh-oh
    * * * T
    Y * I A
    T A T Y
    I * * T
    Uh-oh
    * * * T
    Y * I A
    * A T Y
    I * * *
    * * * T
    * * I A
    * A T *
    I * * *
    * * * *
    * * I A
    * A * *
    I * * *
    * * * *
    * * * A
    * A * *
    * * * *
    Congratulations!
    

    输入样例2:

    2
    I T I T
    Y T I A
    T A T Y
    I K K T
    5
    1 1 4 4
    1 1 2 3
    1 1 2 3
    2 2 4 1
    2 2 3 3
    

    输出样例2:

    Uh-oh
    * T I T
    Y T * A
    T A T Y
    I K K T
    Uh-oh
    Uh-oh
    Game Over
    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #include <stdlib.h>
    
    using namespace::std; 
    
    int main(){
          int n;
          scanf("%d",&n);
          getchar();//消去空格 
    	  char a[12][12];
    	  for(int i=0;i<2*n;i++)
    	  {
    	  	for(int j=0;j<2*n;j++)
    	  	{
    	  		a[i][j]=getchar();
    	  		getchar();
    	  	}
    	  } 
    	  
    	  int k;
    	  scanf("%d",&k);
    	  int x1,y1,x2,y2;
    	  int count=(2*n)*(2*n)/2;
    	  int wrong=0;
    	  for(int i=0;i<k;i++)
    	  {
    	  	
    	  	  scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
    	  	  if(a[x1-1][y1-1]==a[x2-1][y2-1]&&a[x1-1][y1-1]!='*')//输入正确 
    	  	  {
    	  	  	a[x1-1][y1-1]='*';
    	  	  	a[x2-1][y2-1]='*';
    	  	  	count--;
    	  	  	if(count==0)//如果全为*,就成功 
    	  	  	{
    	  	  	    printf("Congratulations!
    ");
    	  	  	    return 0;
    	  	    }else//否则,输出新的图像 
    	  	    {
    	  	      for(int p=0;p<2*n;p++)
    				{
    					for(int q=0;q<2*n;q++)
    					{
    						printf("%c",a[p][q]);
    						if(q!=(2*n-1))
    						{
    							printf(" ");
    						}
    					}
    					printf("
    ");
    				}	
    	  	    }
    	  	  }else//没有配对成功 
    	  	  {
    			printf("Uh-oh
    ");
    			wrong++; 
    			if(wrong==3)
    			{
    				printf("Game Over
    ");
    				return 0;
    			}
    		  } 
    			 
    	  	
    	  	
    	  }
    	  
    	  
          return 0;
    }
    

      

  • 相关阅读:
    把git项目放到个人服务器上
    关于fcitx无法切换输入法的问题解决
    博客变迁通知
    (欧拉回路 并查集 别犯傻逼的错了) 7:欧拉回路 OpenJudge 数据结构与算法MOOC / 第七章 图 练习题(Excercise for chapter7 graphs)
    (并查集) HDU 1856 More is better
    (并查集 不太会) HDU 1272 小希的迷宫
    (并查集 注意别再犯傻逼的错了) HDU 1213 How Many Tables
    (最小生成树 Kruskal算法) 51nod 1212 无向图最小生成树
    (并查集) HDU 1232 畅通工程
    (最小生成树 Prim) HDU 1233 还是畅通工程
  • 原文地址:https://www.cnblogs.com/ligen/p/4277258.html
Copyright © 2011-2022 走看看