您的位置:首页 > 其它

蓝桥杯试题集 基础练习 字母图形

2014-12-23 16:05 267 查看
基础练习 字母图形

时间限制:1.0s 内存限制:256.0MB


问题描述

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

输入格式

输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。

输出格式

输出n行,每个m个字符,为你的图形。

样例输入

5 7

样例输出

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

数据规模与约定

1 <= n, m <= 26。

我看成n>=1(n非常大),m<=26了。。。无语。。。写半天错了,只给了70分。原来题目要求是1<=n<=26,1<=m<=26;想看的可以看下代码。。测试数据对,就是不知在这道题提交为何错了,来个大神指点下可好?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char a[100000][60];//我以为数组大错误,没想到改成a[60][60]也不对。
int main()
{

	int n,m;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
	    memset(a,0,sizeof(a));
	    int i;
	    a[0][0]='A';
	    for(i=1;i<26;i++)
	    a[0][i]=a[0][i-1]+1;
		int j,b;
		for(i=0;i<m;i++)
		{
		  b=-1;
		 for(j=1;j<n;j++)
		 {
		    if(a[j-1][i]=='A')b=-b;
		 	a[j][i]=a[j-1][i]+b;
		 	if(a[j][i]=='A'+m)//注意此处,当执行该判断语句时b肯定为1,
			 {
			 a[j][i]='A';
			 b=-1;        //如果没有该语句,下一个循环b就变成-1,就会是字符'A'-1. 
			 }
		 }
	    }
		for(i=0;i<n;i++)
		{
		for(j=0;j<m;j++)
		printf("%c",a[i][j]);
		printf("\n");
	    }
	}
	return 0;
}


然后我发现1<=n<=26,1<=m<=26,写的代码:

当然,这个是AC的。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	char a[30][30];
	int i,j=0;
	for(i=0;i<26;i++)
	a[i][0]=a[0][j++]='A'+i;
	for(i=1;i<26;i++)
	 for(j=1;j<26;j++)
	 a[i][j]=a[i-1][j-1];
	 int n,m;
	 while(scanf("%d%d",&n,&m)!=EOF)
	 {
	 	for(i=0;i<n;i++)
	 	{
	 	 for(j=0;j<m;j++)
	 	 printf("%c",a[i][j]);
	     printf("\n");
		}
	 }
	 return 0;
 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: