飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1698|回复: 0

[C/C++] N宫格C源码

[复制链接]

该用户从未签到

发表于 2009-7-28 21:18:09 | 显示全部楼层 |阅读模式
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void Show(int * a,int n)
{
        int i;
        for(i=0;i<(n*n);i++)
        {
            if(!(i%n))
            printf("\r\n");
            printf("%02d ",*(a+i));        
        }
            printf("\r\n");
}

void NGongGe(int * a,int n)
{
        int i,j,k;
        i=n-1;      
        j=n/2;      
        *(a+i*n+j)=1;
            for(k=2;k<=n*n;k++)
        {               
//         if(*(a+((i+1+n)%n)*n+((j-1+n)%n)))  // 两种算法均可
//         {
//             i=(i-1+n)%n;
//             *(a+i*n+j)=k;
//             continue;
//         }
        i=(i+1+n)%n;
                j=(j-1+n)%n;
        if(*(a+i*n+j))
        {
            i=(i-2+n)%n;
            j=(j+1+n)%n;
            *(a+i*n+j)=k;
            continue;
        }
                *(a+i*n+j)=k;
        }
        Show(a,n);
}

int main()
{
        int n,* a;
        scanf("%d",&n);
        a=(int *)malloc(sizeof(int)*n*n);
        if(!a)return 0;
        memset(a,0,sizeof(int)*n*n);
        NGongGe(a,n);
        free(a);
        return 0;
}



期待一下 100! 的代码 写过这个程序的朋友欢迎分享下哈 ~~
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表