关于蓝桥杯15届校赛第四题

原创 2015年11月18日 12:06:53

最近几天忙着看指针和数组的关系,把书翻了起来,不翻不要紧,一翻吓一跳,本以为网上资源那么丰富,不需要去翻书本,然而并不是这样,网上讲的很片面,书上的细节很多,需要静下心来去慢慢啃。前几天校园网故障,一直上不去网,于是也就无法写博客了,昨天来网了,而昨天又是蓝桥杯校赛,于是就耽搁了写博客,最主要也是刚开始并不习惯写博客。

不说那么多没用的,既然昨天进行了蓝桥杯校赛,那我们就来说说这个校赛,校赛义工五道题,前三道都不值一提,只有第四、五道是难点,尤其是第四道,特别难搞,而第五道有简单的思路,但是思路简单了,编程就复杂了,目前还没有想到什么好办法,而第四道,本身思路就麻烦,编程还难,细节问题太多,他究竟是什么题呢,现在我们来看看。。。。。。

昨天的第四题,题本身看似很简单,很容易理解,如下:

在一行输入一个N,然后在下方输出一个NxN数据方阵,如图:
这里写图片描述

就这么短短的一道题,难住了我,一次次分析算法,最后终于想到了思路,可是没有时间去写细节代码,因为太乱了,细节处可以说是毫无规章,总的来说是利用二维数组,用了11个for循环,第一个for循环,是用来循环固定TuXing[i][i](i < N/2),也就是确定每一圈数字循环的第一个(左上角的那个数字,作为每一圈递加的开始),后面接着是四个双重for循环嵌套,把递加的四种情况按照上半部从左至右依次递加、右半部从上至下依次递加、下半部从右至左依次递加、左半部从下至上一次递加的顺训编写,保证每个循环头尾相连,环环相扣,最后再跟一个双重for循环嵌套,依次输出二维数组的每个一数据,保证了数据的正常输出,最后形成一个回字型输出方针,细节问题特别耐人寻味,需要特别斟酌。代码如下:

#include <stdio.h>
int main(int argc, const char * argv[])
{
    int TuXing[100][100],i=0,j=0;
    float N=0;
    TuXing[0][0]=1;
    scanf("%g",&N);
    for (i=1; i<N/2; i++)
    {
        TuXing[i][i]=TuXing[i-1][i-1]+(N-2*(i-1)-1)*4;
    }
    for (i=0; i<N/2; i++)
    {
        for (j=i+1; j<N-i; j++)
        {
            TuXing[i][j]=TuXing[i][j-1]+1;
        }
    }
    for (j=N-1; j>N/2-0.5; j--)
    {
        for (i=N-j; i<j+1; i++)
        {
            TuXing[i][j]=TuXing[i-1][j]+1;
        }
    }
    for (i=N-1; i>N/2-0.5; i--)
    {
        for (j=i-1; j>N-2-i; j--)
        {
            TuXing[i][j]=TuXing[i][j+1]+1;
        }
    }
    for (j=0; j<N/2-1; j++)
    {
        for (i=N-j-2; i>j; i--)
        {
            TuXing[i][j]=TuXing[i+1][j]+1;
        }
    }
    for (i=0; i<N; i++)
    {
        for (j=0; j<N; j++)
        {
            printf("%d\t",TuXing[i][j]);
        }
        printf("\n");
    }
    return 0;
}

此代码在Mac系统下的Xcode编译环境中试验成功,但是在上面的规定范围中,有一部分输出结果会变形,不是正方形的存在,那是因为屏幕界面的影响,屏幕分辨率和屏幕大小以及字体大小的原因,导致屏幕无法完整的按要求输出成矩阵,一行无法表示N个数据,故会换行,这里需要明确声明,不是代码的问题,是硬件设施的问题,假如屏幕足够大,分辨率足够大,那么别说N=100时的结果,纵使N=1000也可以照样无误输出。

昨天,做出这道题我很激动,感觉自己对编程的细节问题有了新的理解更深入的理解,编程是一门艺术,很多时候需要遵守一些编程规范,这就好比,毕加索的画是现代派风格,这“现代派”就是他的规范,而他的内容是由他自己创作出来的,那是艺术。编程也是,很多细节问题需要我们人性化的去改变,去找到合适的方法,也许方法不止一种,但是每一种都是艺术,有些代码也许是我们臆想的,根本和题没有直接关系,但是他可以解决我们的问题,这就是编程的人性化,艺术化,并不是每个搞编程的人都会感觉编程是枯燥无味的,那是因为艺术从来就不是每个人都欣赏的了的,但是总有一些人懂得他的艺术。。。。。。

编程,努力去找多种编程方法,不把代码搞的千篇一律;努力去优化自己的代码,不让代码占用多余的内存;努力去创造代码,让自己的代码独树一帜……这就是我的编程艺术!

好了,废话一箩筐,但是今天主要记录的是自己对这道题的见解,希望可以对自己以后的编程道路有所帮助。

版权声明:听说这里让写版权声明~~~ 举报

相关文章推荐

蓝桥杯校赛题目以及解析

输入一个字符串,求它包含多少个单词。单词间以一个或者多个空格分开。 第一个单词前,最后一个单词后也可能有0到多个空格。 比如:" abc xyz" 包含两个单词,"ab c xyz ...

2016 蓝桥杯 国赛 JAVA A组第四题 机器人塔

机器人塔 X星球的机器人表演拉拉队有两种服装,A和B。 他们这次表演的是搭机器人塔。 类似:       A     B B    A B A   A A B B  B B B A B A...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

第八届蓝桥杯国赛Java b组 第四题

标题:小计算器 模拟程序型计算器,依次输入指令,可能包含的指令有 1. 数字:'NUM X',X为一个只包含大写字母和数字的字符串,表示一个当前进制的数 2. 运算指令:'ADD...

机器人繁殖--第六届蓝桥杯国赛 C语言 C组第四题

标题:机器人繁殖 X星系的机器人可以自动复制自己。它们用1年的时间可以复制出2个自己,然后就失去复制能力。 每年X星系都会选出1个新出生的机器人发往太空。也就是说,如果X星系原有机器人5个, 1...

第七届蓝桥杯个人赛省赛(Java B组)第四题

分小组 9名运动员参加比赛,需要分3组进行预赛。 有哪些分组的方案呢? 我们标记运动员为 A,B,C,… I 下面的程序列出了所有的分组方法。 该程序的正常输出为: ...

第三届蓝桥杯 第四题 低碳生活大赛

 第四题 某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:       每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相...

第三届蓝桥杯Java高职组决赛第四题

题目描述: 【编程题】(满分21分)     Excel是最常用的办公软件。每个单元格都有唯一的地址表示。比如:第12行第4列表示为:“D12”,第5行第255列表示为“IU5”。      ...

第七届蓝桥杯决赛JavaB组第四题 路径之谜

路径之谜 小明冒充X星球的骑士,进入了一个奇怪的城堡。 城堡里边什么都没有,只有方形石头铺成的地面。 假设城堡地面是 n x n 个方格。【如图1.png】所示。 按习俗,骑士要从西北角走到东南角。 ...

蓝桥杯java第六届决赛第四题--穿越雷区

标题:穿越雷区 X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废。 某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)