免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Send_linux
打印 上一主题 下一主题

ChinaUnix“C语言代码”开发大赛!获奖名单公布!(奖品积分已经添加,请大家查收!) [复制链接]

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
171 [报告]
发表于 2009-03-18 16:29 |只看该作者
活动已经结束,谢谢大家的参与,获奖名单及联系方式已经在第一楼更新,欢迎大家提出意见。

论坛徽章:
0
172 [报告]
发表于 2009-03-18 19:05 |只看该作者
获奖了,感谢ChinaUnix!!

论坛徽章:
0
173 [报告]
发表于 2009-03-18 20:04 |只看该作者

难道我做的两个题目不够入围?

论坛徽章:
0
174 [报告]
发表于 2009-03-18 21:05 |只看该作者
恭喜获奖者

论坛徽章:
0
175 [报告]
发表于 2009-03-19 08:39 |只看该作者
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
        int k, i, j, n, m;
        int nStep;
        int nBig;
        int nCount;
        int nSize;
        int *pInts = NULL;

        printf("Please input: ");
        scanf("%d", &n);

        nBig = n*n;
        m = 1;
       
        pInts = (int*)malloc(nBig*sizeof(int));
        memset((void*)pInts, 0, nBig*sizeof(int));

        nStep = n-1;

        m = 1;
       
        nCount = nBig;
        if(n % 2)
        {
                nCount--;
                pInts[nBig/2] = nBig;
        }

        nSize = nCount / 4;

        printf("nSize=%d\n", nSize);
        for(j=0; j<nSize; j++)
        {
                for(i=j*n+j,k=0; k<nStep; i++,k++)
                        pInts = m++;               

                for(i=j*n+n-1-j,k=0; k<nStep; i+=n,k++)
                        pInts = m++;

                for(i=nBig-1-j*n-j,k=0; k<nStep; i--,k++)
                        pInts = m++;
               
                for(i=n*(n-1-j)+j,k=0; k<nStep; i-=n,k++)
                        pInts = m++;               

                nStep-=2;
        }

        for(i=0; i<n; i++)
        {
                for(j=0; j<n; j++)
                        printf("%-2d, ", *(pInts + i*n + j));

                printf("\n");
        }

        free(pInts);

        return 0;
}

论坛徽章:
0
176 [报告]
发表于 2009-03-19 10:21 |只看该作者
有些无语,我做了第一题,看了获奖的第一题,算法效率还是很高,但从编码风格、软件工程和思路等方面好像没有超过其他选手的地方
作者用的直接计算换取空间的方法,其实和模拟用空间换时间的方法差不多,当然空间效率要好,另外要追求效率,还可以通过解一个不等式的方法,时空间复杂度也都为 O(1)

[ 本帖最后由 xyywll 于 2009-3-19 10:29 编辑 ]

论坛徽章:
0
177 [报告]
发表于 2009-03-19 13:46 |只看该作者
谢谢版主,得了个书评奖

论坛徽章:
0
178 [报告]
发表于 2009-03-21 17:39 |只看该作者
可惜没赶上!!!!!!!!!!

论坛徽章:
0
179 [报告]
发表于 2009-03-23 13:09 |只看该作者
虽说时间过了,不过还是贴出来。
我的没有文件的操作,是按照递归的方法写的,空间开销可能大,不过具体我也不是很懂。
希望大牛们指导指导。
思路是把数字一圈一圈的从外向内填充,用n,和i来控制填充的边界。

  1. #include <stdio.h>

  2. #define N 10

  3. int array[N][N];

  4. int main()
  5. {
  6.         void input(int, int, int);
  7.         int n, i, num, j;/*n为输入的数,i为控制矩阵边的参数,num为要填充的数字,j在输入的时候用*/

  8.         i = j = num = 0;
  9.         scanf("%d", &n);
  10.         input(n, i, num);
  11.         for (j = 0; j < n; j++) {
  12.                 for (i = 0; i < n; i++)
  13.                         printf("%3d",array[j][i]);
  14.                 printf("\n");
  15.         }
  16.         return 0;
  17. }

  18. void input(int n, int i, int num)
  19. {
  20.         int row, col;

  21.         if (n > 0) {/*如果没有到最内层则继续*/
  22.                 row = col = i;
  23.                 while (col < n)
  24.                         array[row][col++] = ++num;
  25.                 col--;
  26.                 row++;/*填充上边*/
  27.                 while (row < n)
  28.                         array[row++][col] = ++num;
  29.                 row--;
  30.                 col--;/*填充右边*/
  31.                 while (col >= i)
  32.                         array[row][col--] = ++num;
  33.                 col++;
  34.                 row--;/*填充下边*/
  35.                 while (row > i)
  36.                         array[row--][col] = ++num;
  37.                 row++;/*填充左边*/
  38.                 input (n-1, i+1,num);/*填充向内一圈*/
  39.         }
  40. }
复制代码


虽说时间过了,不过还是贴出来。
我的没有文件的操作,是按照递归的方法写的,空间开销可能大,不过具体我也不是很懂。
希望大牛们指导指导。
思路是把数字一圈一圈的从外向内填充,用n,和i来控制填充的边界。

[ 本帖最后由 jbqncn 于 2009-3-23 13:38 编辑 ]

论坛徽章:
0
180 [报告]
发表于 2009-03-24 16:57 |只看该作者
答案呢???
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP