曾经沧海难为水,除却巫山不是云。|

Joey-Wang

园龄:4年3个月粉丝:17关注:0

3.3 图形输出

3.3 图形输出

http://codeup.cn/contest.php?cid=100000577

B Hello World for U

image-20200702191004238

题目释义

给出一个长度为N字符串,将它按照U型输出。

设左边竖的一列为n1,右边竖的一列为n3,底部一排为n2,要求n1 = n3 = max { k| k <= n2 for all 3 <= n2 <= N } 且n1 + n2 + n3 - 2 = N。

以样例为例,输入Helloworld!,N=11,n1=hell,n2=lowor,n3=rld!

错误思路

做题时以为n2是不确定的,n1 = n3 = max { k| k <= n2 for all 3 <= n2 <= N } 表示k小于3 <= n2 <= N中所有n2的取值,所以认为n1=n3=3。

但题目的意思是n2可能的取值为[3, N],n2在某个字符串情况下是确定的,k为max{ k | k<=n2 }

题目解析

n1 + n2 + n3 - 2 = N。

n1 = n3 = max { k| k <= n2 }。即要让n1与n3尽可能大,则n1=n3=n2=(N+2)/3;

则得到字符串str时即可求出n1,n2,n3。

需按照每行输出,则每次需输出 str[i] 与 str[N-1-i] 以及二者之间的空格,最后输出底部的字母n3。

设side=n1=n2=n3=(N+2)/3,则之间的空格strip=n3-2=N-n1-n2=N-2*side。

前side-1次输出 str[i] 与 str[N-1-i] 以及二者之间的空格strip,最后输出n3。

代码

#include <cstdio>
#include <cstring>

#define MAX 100

int main() {
    char str[MAX];
    while (scanf("%s", str) != EOF) {
        int len = strlen(str);
        int side, strip;
        side = (len + 2) / 3;
        strip = len - 2 * side;
        for (int i = 0; i < side - 1; i++) {
            printf("%c", str[i]);
            for (int j = 0; j < strip; j++)
                printf(" ");
            printf("%c\n", str[len - 1 - i]);

        }
        for (int i = side - 1; i < side + strip + 1; i++) {
            printf("%c", str[i]);
        }
    }
    return 0;
}

D 沙漏图形

image-20200702230127867

代码

#include <cstdio>
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        for (int i=0;i<n;i++){
            for (int j=0;j<i;j++) printf(" ");
            for (int j=0;j<n-i;j++) printf("* ");
            printf("\n");
        }
        for (int i=1;i<n;i++){
            for (int j=0;j<n-i-1;j++) printf(" ");
            for (int j=0;j<i+1;j++) printf("* ");
            printf("\n");
        }
    }
    return 0;
}

本文作者:Joey-Wang

本文链接:https://www.cnblogs.com/joey-wang/p/14541160.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Joey-Wang  阅读(83)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开