杭电叠筐 写的有点复杂

思路很清晰,找到第一个该是什么,然后一次一轮回,走n次即可

还有就是注意输出格式

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
using namespace  std;
char a[8001][8001];
int main()
{
		int n,i,j; char x;int m=1;
	while(scanf("%d",&n)!=EOF)
	{
		getchar();
		char ch1,ch2;
		scanf("%c",&ch1);	getchar();
		scanf("%c",&ch2);
		if(m!=1)
		printf("\n");	m++;
		if(n==1)
		printf("%c\n",ch1);
		else
		{
			int t=n,k=1;
			char x1,y;
			if((t-1)/2%2==1)// ch1 zhongxin 我是从外往里走,找第一个 
				{
					x1=ch2; 
					y=ch1;
				}
				else
				{
					x1=ch1;
					y=ch2;
				}
			while(t>=0)    //每次走一圈 
			{
				if(t%2==1) x=x1;
				else	x=y;
				j=k;i=k;
				for(i=k;i<=t;i++)
				{
					a[i][j]=x;
					a[i][t]=x;
					a[t][i]=x;
					a[j][i]=x;
				}
				k++;	t--;
			}
			a[1][n]=' '; a[n][1]=' ';
			a[1][1]=' '; a[n][n]=' ';
			for(i=1;i<=n;i++)
			{
				for(j=1;j<=n;j++)
				printf("%c",a[i][j]);
				printf("\n");
			}
			//printf("\n");
		}		
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43916298/article/details/85055696