zoukankan      html  css  js  c++  java
  • 【贪心】【uva11520】 Fill the Square

     填充正方形(Fill the Square, UVa 11520)

    在一个n×n网格中填了一些大写字母,你的任务是把剩下的格子中也填满大写字母,使得任意两个相邻格子(即有公共边的格子)中的字母不同。如果有多种填法,则要求按照从上到下、从左到右的顺序把所有格子连接起来得到的字符串的字典序应该尽量小。

    【输入格式】

    输入的第一行为测试数据组数T。每组数据的第一行为整数nn≤10),即网格的行数和列数;以下n行每行n个字符,表示整个网格。为了清晰起见,本题用小数点表示没有填字母的格子。

    【输出格式】

    对于每组数据,输出填满字母后的网格。

    【样例输入】

    2

    3

    ...

    ...

    ...

    3

    ...

    A..

    ...

    【样例输出】

    Case 1:

    ABA

    BAB

    ABA

    Case 2:

    BAB

    ABA

    BAB


    水题一枚

    上代码

    #include<cstdio>
    #include<cstring>
    const int maxn=12;
    char map[maxn][maxn];
    int n;
    int input()
    {
    		char c;
    		memset(map,0,sizeof(map));
    		scanf("%d
    ",&n);
    		for(int i=1;i<=n;i++)
    	 {
    		 for(int j=1;j<=n;j++)
    		 scanf("%c",&map[i][j]);
    		 scanf("%c",&c);
    	}		
    	return 0;
    }
    int getans()
    {
    	for(int j=1;j<=n;j++)
    	 for(int i=1;i<=n;i++)
    	  for(char k='A';k<='Z';k++)
    	  {
    	  	if(map[i][j]=='.')
    	  	 if(map[i-1][j]!=k&&map[i][j-1]!=k&&map[i][j+1]!=k&&map[i+1][j]!=k)
    	  	  { map[i][j]=k;break;}
    	  	 else;
    	  	else break;
    	  }
    	return 0;
    }
    int putans(int Case)
    {
    	printf("Case %d:
    ",Case);
    	for(int i=1;i<=n;i++)
    	 {
    	  for(int j=1;j<=n;j++)
    	  printf("%c",map[i][j]);
    	  printf("
    "); 
    	 }
    }
    int main()
    {
    	int T,TT;
    	scanf("%d",&T);
    	TT=T;
    	while(T--)
    	{
    		input();
    		getans();
    		putans(TT-T);
    	}
    	return 0;
    }



  • 相关阅读:
    洛谷P1613 跑路
    洛谷P2149 Elaxia的路线
    洛谷P3119 草鉴定
    洛谷P1972 HH的项链
    洛谷P2458 保安站岗
    uva10061
    uva579
    uva 127 "Accordian" Patience
    uva10177 (2/3/4)-D Sqr/Rects/Cubes/Boxes?
    uva156
  • 原文地址:https://www.cnblogs.com/zy691357966/p/5480459.html
Copyright © 2011-2022 走看看