叠筐 HDU - 2074

找规律的模拟题,细节较多。网上推出的有公式。

除了公式之外,还可以这样看。

这个花框是里外交替的。假设 外 1 层为A的话,接下来外2层就是B,再接下来,外3层为A.....以此类推

层数 t ∈ [ 0,(T+1)/2 )

当 t 为奇数 时 ,最外层为 A ,当 t 为偶数时 最外层为B ,然后层层交替。

处理完之后,再挖去四个角。以空格覆盖之。完毕。

注意事项:

(1)由于数据有多组,注意str字符数组的初始化........

(2)当 N==1 时单独输出。

(3)函数调用里面的str[N-1][i]和str[i][N-1],这里必须N-1。(因为下标从0开始)

(4)函数调用 内层的四个for循环结束后,需要T--,N--;

下面附上代码

#include<stdio.h>
#include<string.h>
int N;
char str[100][100];
char x,y;
void check(int ceng,char a,char b) // a 是外层
{
    int T = ceng-1,xx = N;
    char c;
    for(int k = 0; k < ceng; k++)
    {
        c = T % 2 ? a : b;
        for(int i = k; i < N; i++) // 上
           str[k][i] = c;
        for(int i = k; i < N; i++) // 下
           str[N-1][i] = c;
        for(int i = k; i < N; i++) // 左
            str[i][k] = c;
        for(int i = k; i < N; i++) // 右
            str[i][N-1] = c;
        T--;  // 推算下一层的字符是谁
        N--; // 本层输完了,减一,输它上面的一层
    }
    str[0][0] = ‘ ‘;
    str[0][xx-1] = ‘ ‘;
    str[xx-1][0] = ‘ ‘;
    str[xx-1][xx-1] = ‘ ‘;
    for(int i = 0; i < xx; i++)
        printf("%s\n",str[i]);
}
int main()
{
    int ok = 0;
    while(scanf(" %d %c %c",&N,&x,&y)!= EOF)
    {
        memset(str,0,sizeof(str));
        if(ok) printf("\n");
        if(N == 1)
        {
            printf("%c\n",x);
            continue;
        }
        int t = (N + 1) / 2;
        check(t,y,x);
        ok = 1;
    }
    return 0;
}

时间: 2025-01-18 18:27:08

叠筐 HDU - 2074的相关文章

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 输入是一个个的三元组,分别是,外筐尺

HDU 2074 叠筐

叠筐 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16088    Accepted Submission(s): 4201 Problem Description 需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错.这个工作现在要让计算机来完成,得看你的了. Input 输入是一个个的三元组,分别是,外筐尺

hduoj 2074 叠筐

叠筐 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 12122    Accepted Submission(s): 3122 Problem Description 需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错.这个工作现在要让计算机来完成,得看你的了. Input 输入是一个个的三元组,分别是,外筐尺

HDUJ 2074 叠筐 模拟

叠筐 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 12017    Accepted Submission(s): 3074 Problem Description 须要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错.这个工作如今要让计算机来完毕,得看你的了. Input 输入是一个个的三元组,各自是,外筐尺

hdoj 2074 叠筐

叠筐 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14556    Accepted Submission(s): 3784 Problem Description 需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错.这个工作现在要让计算机来完成,得看你的了. Input 输入是一个个的三元组,分别是,外筐尺寸

HDU2074 叠筐(模拟问题)

Problem Description http://acm.hdu.edu.cn/showproblem.php?pid=2074 需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错.这个工作现在要让计算机来完成,得看你的了. Input 输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符: Output 输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角

题目1432:叠筐

时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:6048 解决:1412 题目描述: 把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错.这个工作现在要让计算机来完成,得看你的了. 输入: 输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符: 输出: 输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉.叠筐与叠筐之间应有一行间隔. 样例输入: 11

hdoj2074 -- 叠筐

叠筐 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 17006    Accepted Submission(s): 4421 Problem Description 需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错.这个工作现在要让计算机来完成,得看你的了. Input 输入是一个个的三元组,分别是,外筐尺寸

hdu2074 叠筐

叠筐 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 20470    Accepted Submission(s): 5348 Problem Description 需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错.这个工作现在要让计算机来完成,得看你的了. Input 输入是一个个的三元组,分别是,外筐尺寸