• hdu 2074 叠筐 好有意思的绘图题


    叠筐

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 12160    Accepted Submission(s): 3136


    Problem Description
    须要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时。边筐花色交错。这个工作如今要让计算机来完毕,得看你的了。
     

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

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

     

    Sample Input
    11 B A 5 @ W
     

    Sample Output
    AAAAAAAAA ABBBBBBBBBA ABAAAAAAABA ABABBBBBABA ABABAAABABA ABABABABABA ABABAAABABA ABABBBBBABA ABAAAAAAABA ABBBBBBBBBA AAAAAAAAA @@@ @WWW@ @W@W@ @WWW@ @@@
     



    #include <iostream>
    #include <map>
    #include<string>
    #define FOR(i,n) for(i=0;i<n;i++)
    using namespace std;
    
    int main()
    {
    	int n,i,j;
    	char c1,c2;
    	int jiaoti,zhong,flag=0;;
    	while(scanf("%d %c %c",&n,&c1,&c2)!=EOF)//%s 跳过前面的空格
    	{
    		if(flag==1)//图与图间换行
    		{
    	    	puts("");
    		}
    		flag=1;
    		if(n==1)//特殊处理, 当个的,
    		{
    			printf("%c
    ",c1);
    			continue;
    		}
    
    		if(n/2+1&1)//由于是从外面開始推的  所以(n-1)/2 的奇偶性 会决定第一行的 图形.
    		{
    			char t;
    			t=c1;
    			c1=c2;
    			c2=t;
    		}
    
    		FOR(i,n)
    		{
    			if(i==0||i==n-1)//第一行和最后一行
    			{
    				printf(" ");
    				FOR(j,n-2)
    					printf("%c",c2);
    				puts(" ");
    				continue;
    			}
    
    
    			if(i<n/2+1)//开头和结尾 交替出现的字母有几个
    				jiaoti=i;
    			else
    				jiaoti--;
    
    			FOR(j,jiaoti)//输出 开头 交替出现的字母
    			{
    				if(j&1)
    				{
    					printf("%c",c1);
    				}
    				else
    				{
    					printf("%c",c2);
    				}
    			}
    
    
    			if(i<n/2+1)//输出每行中间的字母.
    				zhong=n-i*2;
    			else
    				zhong+=2;
    			FOR(j,zhong)
    			{
    				if(i&1)
    				{
    					printf("%c",c1);
    				}
    				else
    				{
    					printf("%c",c2);
    				}
    			}
    
    			FOR(j,jiaoti)//输出 结尾 交替出现的字母
    			{
    				if(j+i&1)
    				{
    					printf("%c",c2);
    				}
    				else
    				{
    					printf("%c",c1);
    				}
    			}
    			puts("");
    		} 
    		
    	}
    	return 0;
    }


  • 相关阅读:
    Android动画系列
    Handler处理机制
    cp命令覆盖文件时不用按Y来确认的方法
    phantomjs
    无界面模式
    win10上安装keras
    MongoDB 排序
    MongoDB 条件操作符
    MongoDB 对象操作
    SQL 和 NoSQL 的区别
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6798286.html
Copyright © 2020-2023  润新知