文章

13

粉丝

0

获赞

44

访问

1.6k

头像
Hello World for U 题解:
P1340 浙江大学机试题
发布于2026年3月9日 20:26
阅读数 41

#include <stdio.h>
#include <string.h>
char s[100];
char ss[80][80];
int main()
{
	while(scanf("%s",s)!=EOF)
	{
		int n1=0,n2=0;
		int n_max=0;
		int len= strlen(s);
		for(int i=0;i<=len;i++)
		{
			n1 = i;
			n2 =len+2-2*n1;
			if(n1<=n2&&n2<=len&&n2>=3)
			{
				if(n1>n_max)
				{
					n_max = n1;
				}
			}
		}
		n1 = n_max;
		n2=len+2-2*n1;
		memset(ss,' ',sizeof(ss));
		for(int i=0;i<n1;i++)
		{
			ss[i][0] = s[i];
		}
		for(int i=n1;i<n2+n1-2;i++)
		{
			ss[n1-1][i-n1+1] = s[i];
		}
		for(int i=n2+n1-2;i<len;i++)
		{
			ss[n2+n1-2+n1-i-1][n2-1] =s[i];
		}
		for (int i = 0; i <= n1 - 1; i++) 
		{
			for (int j = 0; j <= n2 - 1; j++) 
			{
				printf("%c", ss[i][j]);
			}
			printf("\n");
		}	
	}
	return 0;
}

找N1的最大值最重要。最后的输出我自己想的也理解不了太抽象了我这样写了。
先根据题目求N1的最大值,然后二维数组打印出来

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发