hdu 2074 叠框

http://acm.hdu.edu.cn/showproblem.php?pid=2074

这道题目以前做过的,用调用函数将map一圈一圈的画,我觉得这个很容易理解先画最外面的一圈,直到x>y,也就是中间那个画完,可是注意有两点:1.注意当n=1的时候输去第一个,2.注意输出的格式,最后没有空行,我PE好多次,原来是把put("")写成了puts(" "),然后我把它改为printf("\n");就ac了,悲剧的一题啊

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <math.h>

char map[80][80],a[2][3];

void  mmm(int x,int y,int k)

{

      if(x>y) return;

      for(int i=x;i<=y;++i)

      map[i][x]=map[x][i]=map[i][y]=map[y][i]=a[k%2][0];

      mmm(x+1,y-1,k+1);

}//一圈一圈的画,递归

int main()

{

    int n,flag=0;

    while(scanf("%d",&n)!=EOF)

    { 

         if(flag>0)

         printf("\n");

         flag++;

         memset(map,0,sizeof(map));

         scanf("%s%s",a[0],a[1]);

         if(n==1)  {puts(a[0]);continue;}

         if(((n+1)/2)%2) 

         mmm(0,n-1,0);

         else

         mmm(0,n-1,1); 

         map[0][n-1]=map[0][0]=map[n-1][0]=map[n-1][n-1]=' ';

         for(int i=0;i<n;++i)

         {

                 puts(map[i]);

         } 

    }

   // system("pause");

    return 0;

}

原文地址:https://www.cnblogs.com/yuelingzhi/p/2130142.html