Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4826346
  • 博文数量: 930
  • 博客积分: 12070
  • 博客等级: 上将
  • 技术积分: 11448
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 16:57
文章分类

全部博文(930)

文章存档

2011年(60)

2010年(220)

2009年(371)

2008年(279)

分类: LINUX

2009-08-23 12:05:22

21 22................
20  7  8  9  10
19  6  1  2  11
18  5  4  3  12
17 16 15 14  13
  
看清以上数字排列的规律,设1点的坐标是(0,0),x方向向右为正,y方向向下为正.例如:7的坐标为(-1,-1) ,2的坐标为(1,0),3的坐标为(1,1).编程实现输入任意一点坐标(x,y),输出所对应的数字。
 
 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int get_num( int x, int y )
{
    int z = abs(x) > abs(y) ? 2*x : 2*y;
    int c = x+y;
    if(x>y)
      --z;
    else
      c = 1-c;
    
    return z*z+c;
}

int main( int argc, char *argv[] )
{
    int x, y, num;
    for (y=-2; y<3; ++y) {
        for (x=-2; x<3; ++x) {
            num = get_num( x, y );
            printf( "%d\t", num );
        }
        printf("\n");
    }

    system("PAUSE");
    return 0;
}

阅读(635) | 评论(0) | 转发(0) |
0

上一篇:24点暴力解法

下一篇:最大子矩阵问题

给主人留下些什么吧!~~