HDU 3927 Math Geek 【这你妹的乱搞】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=3927

真不想多说。。随便搞。。。

1 2 3 16
4 5 6 15
7 8 9 14
10 11 12 13 的方法构造出来。
然后随便(或者说随机)调整一下。。然后就过了。。。
只能说明幻方的解集很小,反幻方的解集太大了吧。。随便就能够造出来。。。n=3记得特判就好。

代码:
#include <iostream>
#include 
<cstdio>
using namespace std;
#define maxn 205
int mat[maxn][maxn];
void gao()
{
    
int n;
    scanf(
"%d",&n);
    
if(n == 3)
    {
        mat[
1][1= 7;
        mat[
1][2= 5;
        mat[
1][3= 2;
        mat[
2][1= 1;
        mat[
2][2= 4;
        mat[
2][3= 8;
        mat[
3][1= 3;
        mat[
3][2= 6;
        mat[
3][3= 9;
    }
    
else
    {
        
int cnt = 1;
        
for(int i = 1;i <= n - 1;i++)
            
for(int j = 1;j <= n - 1;j++)
                mat[i][j] 
= cnt++;
        
for(int j = 1;j <= n;j++)
            mat[n][j] 
= cnt++;
        
for(int i = n - 1;i >= 1;i--)
            mat[i][n] 
= cnt++;
        
for(int i = 1;i <= n/2;i++)
            swap(mat[i][n],mat[n][n
-i+1]);
    }
    
for(int i = 1;i <= n;i++)
        
for(int j = 1;j <= n;j++)
            printf(
"%d%c",mat[i][j],(j==n)?'\n':' ');
}
int main()
{
    
int t;
    scanf(
"%d",&t);
    
for(int i = 1;i <= t;i++)
    {
        printf(
"Case #%d:\n",i);
        gao();
    }
}

posted on 2011-08-09 18:26 BUPT-[aswmtjdsj] @ Penalty 阅读(368) 评论(0)  编辑 收藏 引用 所属分类: HDU Solution Report


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年7月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿(1)

随笔分类(150)

随笔档案(71)

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜