九度OJ 题目1432:叠筐

来源:互联网 发布:什么叫网络设计? 编辑:程序博客网 时间:2024/06/05 20:17
内存限制:128 兆       时间限制:1 秒
题目描述:

把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。

输入:

输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;

输出:

输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。

样例输入:
11 B A 5 @ W
样例输出:
 AAAAAAAAAABBBBBBBBBAABAAAAAAABAABABBBBBABAABABAAABABAABABABABABAABABAAABABAABABBBBBABAABAAAAAAABAABBBBBBBBBA AAAAAAAAA @@@@WWW@@W@W@@WWW@ @@@

本题思路:

        先定义二维数组,再由内到外一圈一圈填充字符,最后去掉四个角。

# include <iostream># include <string.h>using namespace std; int main(){    int n,m,i,j;    char IN,OUT;    while(cin>>n>>IN>>OUT&&n>0&&n<80&&n%2!=0)    {                 char pic[n+1][n+1],K;        int f=0;        for(m=(n+1)/2;m>=1;m--)//由最内层框开始循环        {            f++;//f用来计数框数的奇偶            if(f%2==1) K=IN;            else if(f%2==0) K=OUT;            for(i=m;i<=n+1-m;i++)//分别按行、列 成圈填充            {                pic[m][i]=K;                pic[n+1-m][i]=K;                pic[i][m]=K;                pic[i][n+1-m]=K;            }        }        if(n!=1)        {            pic[1][1]=' ';pic[1][n]=' ';pic[n][1]=' ';pic[n][n]=' ';        }        for(i=1;i<=n;i++)        {            for(j=1;j<=n;j++)            cout<<pic[i][j];            cout<<endl;        }        cout<<endl;    }}/**************************************************************    Problem: 1432    Language: C++    Result: Accepted    Time:10 ms    Memory:1520 kb****************************************************************/

Tips:

1.本题要注意框数为1时,边角不需打磨;

2.“叠筐与叠筐之间应有一行间隔”指的是整个叠筐输出完后有一行间隔。(在这里PE了好几次)

0 0
原创粉丝点击