现在的位置: 首页 > 综合 > 正文

1358 螺旋文字阵

2012年08月26日 ⁄ 综合 ⁄ 共 914字 ⁄ 字号 评论关闭
 
描述

你已经知道了一个长度为R(R<=100)的字符串,现在要求你按照如下方式填入一个N*N的方阵中,如果填不满,剩下的位置补充为’#’。

字符串:hello_c++

填充到一个3*3的方阵中效果:

hel

++l

c_o

字符串:where_me

填充到3*3的方阵中效果:

whe

e#r

m_e

(没有填充满用#代替)

输入

第一行包含一个整数T,表示有T组测试数据。

以下每组测试数据格式:

第一行包含2个整数R和N,其中R表示字符串长度,N代表方阵大小,小于等于10.

第二行包含一个含有R个字符的字符串,字符集:’a’-‘z’,’A’-‘Z’,’0’-‘9’,空格以及常用标点符号。

输出

输出填充好后的方阵。

 

 

模拟题,找规律

#include <stdio.h>
#include <string.h>
main()
{
	int number,t;
	char a[12][12];
	int m,n;
	char r[101];
	int i,j,k;
	int count;
	int up;
	scanf("%d",&number);
	for(t=1;t<=number;t++)
	{
		scanf("%d %d",&m,&n);
		scanf("%s",&r);

		memset(a,'#',sizeof(a));

		count=m;
		k=0;
		up=0;
		while(1)
		{
			for(i=k+1;i<=n-k;i++,up++)
			{	
				a[k][i]=r[up];
				count--;
				if(count==0)
					goto ABC;
			}

			for(i=k+1;i<n-k;i++,up++)
			{
				a[i][n-k]=r[up];
				count--;
				if(count==0)
					goto ABC;
			}

			for(j=n-k-1;j>=k+1;j--,up++)
			{
				a[n-k-1][j]=r[up];
				count--;
				if(count==0)
					goto ABC;
			}
			for(j=n-k-1-1;j>=k+1;j--,up++)
			{
				a[j][k+1]=r[up];
				count--;
				if(count==0)
					goto ABC;

			}
			k++;




		}


ABC:
		for(i=0;i<n;i++)
		{
			for(j=1;j<=n;j++)
				printf("%c",a[i][j]);
			printf("\n");
		}
	}
}

 

抱歉!评论已关闭.