| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1315 人关注过本帖
标题:小题目,高手给点提示
只看楼主 加入收藏
youthlin
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2004-8-7
收藏
 问题点数:0 回复次数:11 
小题目,高手给点提示

打印"魔方阵".魔方阵就是这样的方正,他的每一行,每一列和对角线之和相等,比如3阶的就是

 8  1  6

 3  5  7

 4  9  2

要求打印N阶魔方阵,就是1-n平方构成的方正

搜索更多相关主题的帖子: 提示 
2004-08-11 12:10
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 

这个好象讨论过……,对于N为奇数,是有个很好的算法的


我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2004-08-11 12:33
youthlin
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2004-8-7
收藏
得分:0 
没有头绪,不知道怎么个算法,有人给点提示吗
2004-08-11 13:50
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

任意阶魔方阵的源代码

特别说明:因此源码非我所写,所以收费高了点

[UseMoney=200]

#include <stdio.h> #define N 100 unsigned matrix[N][N]; void init(void); void odd(unsigned startdigit,unsigned char startrow,unsigned char startcol,unsigned char rowcol); void odd_even(unsigned char rowcol); void even_even(unsigned char rowcol); void print(unsigned char rowcol); void verify(unsigned char rowcol); main() { unsigned char number; printf("Please input a number:"); scanf("%d",&number); init(); if (number % 2) odd(1,0,0,number); else if (number % 4) odd_even(number); else even_even(number); print(number); verify(number); return 0; } void init(void) { unsigned char i,j; for (i=0;i<N;i++) for (j=0;j<N;j++) matrix[i][j] = 0 ; } void odd(unsigned startdigit,unsigned char startrow,unsigned char startcol,unsigned char rowcol) { unsigned char row,col,row0,col0; unsigned i; row0 = row = startrow; col = (rowcol - 1)/2 + startcol; matrix[row][col]=startdigit; for (i=startdigit+1;i<=startdigit+rowcol*rowcol-1;i++) { if (row-1 < startrow) row = startrow+rowcol-1; else row--; if (col+1 > startcol+rowcol-1) col = startcol; else col++; if (!matrix[row][col]) { row0=row; col0=col; matrix[row][col]=i; } else { row=row0; if (row+1 > startrow+rowcol-1) row = startrow; else row++; col=col0; matrix[row][col]=i; } } } void odd_even(unsigned char rowcol) { unsigned char k=rowcol/2; unsigned char row,col; unsigned t,l; odd(1,0,0,k); odd(k*k+1,k,k,k); odd(2*k*k+1,0,k,k); odd(3*k*k+1,k,0,k); for (col=0;col<=k/2-1;col++) for (row=0;row<k;row++) if (!(col == 0 && row+k == k/2+k)) { t = matrix[row+k][col]; matrix[row+k][col] = matrix[row][col]; matrix[row][col] = t; } t = matrix[(k-1)/2+k][(k-1)/2]; matrix[(k-1)/2+k][(k-1)/2] = matrix[(k-1)/2][(k-1)/2]; matrix[(k-1)/2][(k-1)/2] = t; l = (k-1)/2; for (col=0;col<l-1;col++) for (row=k;row<rowcol;row++) { t = matrix[row][rowcol-col-1]; matrix[row][rowcol-col-1] = matrix[row-k][rowcol-col-1]; matrix[row-k][rowcol-col-1] = t; } } void even_even(unsigned char rowcol) { unsigned order1=rowcol*rowcol,order2=1; unsigned char row,col,k; for (row=0;row<rowcol;row++) for (col=0;col<rowcol;col++) if ((row % 4) == (col % 4) || ((row % 4) + (col % 4) == 3)) { matrix[row][col] = order1--; order2++; } else { matrix[row][col] = order2++; order1--; } } void print(unsigned char rowcol) { char *str="\xc4\xc4\xc4\xc4"; unsigned char i,j; for (i=0;i<rowcol;i++) { for (j=0;j<rowcol;j++) { if (i == 0 ) if (j == 0) printf("\xda"); else printf("\xc2"); else if (j == 0) printf("\xc3"); else printf("\xc5"); printf("%s",str); } if (i == 0) printf("\xbf\n"); else printf("\xb4\n"); for (j=0;j<rowcol;j++) printf("\xb3%4d",matrix[i][j]); printf("\xb3\n"); } printf("\xc0%s",str); for (j=1;j<rowcol;j++) printf("\xc1%s",str); printf("\xd9\n"); } void verify(unsigned char rowcol) { unsigned char i,j; unsigned sum=0,sum1=0; for (i=0;i<rowcol;i++) { sum1=0; for (j=0;j<rowcol;j++) sum1+=matrix[i][j]; if (sum == 0) sum=sum1; else if (sum1 != sum) { printf("Error!\n"); return; } } for (i=0;i<rowcol;i++) { sum1=0; for (j=0;j<rowcol;j++) sum1+=matrix[j][i]; if (sum == 0) sum=sum1; else if (sum1 != sum) { printf("Error!\n"); return; } } //1+2+3+ ... +n2=n2(n2+1)/2 printf("Verify OK! The sum is %d\n",sum);//sum= n*n*(n*n+1)/2 }

[/UseMoney]


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-08-11 14:41
youthlin
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2004-8-7
收藏
得分:0 

不是你写也要钱,财迷,一分也不给你

2004-08-11 16:38
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 

我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2004-08-11 17:39
四毛
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2004-8-13
收藏
得分:0 
老潭那本书上有的啊

2004-08-14 20:08
kuangjingbo
Rank: 1
等 级:新手上路
帖 子:312
专家分:0
注 册:2004-4-24
收藏
得分:0 

只有奇数的时候才行!


永不放弃!
2004-08-14 20:15
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

谁说只有奇数的时候才行?

Please input a number:4 ┌────┬────┬────┬────┐ │ 16│ 2│ 3│ 13│ ├────┼────┼────┼────┤ │ 5│ 11│ 10│ 8│ ├────┼────┼────┼────┤ │ 9│ 7│ 6│ 12│ ├────┼────┼────┼────┤ │ 4│ 14│ 15│ 1│ └────┴────┴────┴────┘ Verify OK! The sum is 34

Please input a number:10 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐ │ 92│ 99│ 1│ 8│ 15│ 67│ 74│ 51│ 58│ 40│ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤ │ 98│ 80│ 7│ 14│ 16│ 73│ 55│ 57│ 64│ 41│ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤ │ 4│ 81│ 88│ 20│ 22│ 54│ 56│ 63│ 70│ 47│ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤ │ 85│ 87│ 19│ 21│ 3│ 60│ 62│ 69│ 71│ 28│ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤ │ 86│ 93│ 25│ 2│ 9│ 61│ 68│ 75│ 52│ 34│ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤ │ 17│ 24│ 76│ 83│ 90│ 42│ 49│ 26│ 33│ 65│ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤ │ 23│ 5│ 82│ 89│ 91│ 48│ 30│ 32│ 39│ 66│ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤ │ 79│ 6│ 13│ 95│ 97│ 29│ 31│ 38│ 45│ 72│ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤ │ 10│ 12│ 94│ 96│ 78│ 35│ 37│ 44│ 46│ 53│ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤ │ 11│ 18│ 100│ 77│ 84│ 36│ 43│ 50│ 27│ 59│ └────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘ Verify OK! The sum is 505

还是花点小钱看看,不多啊?才200

[此贴子已经被作者于2004-08-14 23:29:02编辑过]


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-08-14 23:25
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
倒,表格怎么搞成这样?

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-08-14 23:30
快速回复:小题目,高手给点提示
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012642 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved