找回密码
 欢迎注册
楼主: shshsh_0510

[擂台] 打印螺旋方阵

[复制链接]
发表于 2008-9-9 09:33:08 | 显示全部楼层
确实够精简了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-9 13:14:14 | 显示全部楼层
还是liangbch的既清晰又简洁,我按着改了改,还能少一些

  1. main(){
  2. int i,j,s[9][9],t,r;
  3. for(i=5;i<9;i++){r=2*i-9;t=r*r;s[i][i]=t;for(j=r;j>=1;j--){s[i][i-j]=t-j;s[i-j][i]=t+j;s[9-i][i-j]=t+r+j;s[i-j+1][9-i]=t-r-j+1;}}
  4. for(i=1;i<9;i++,printf("\n"))for(j=1;j<9;j++)printf("%3d",64-s[i][j]);

  5. printf("--------------------------\n");

  6. printf("1 2 3 4 5 6 7 8\n28 29 30 31 32 33 34 9\n27 48 49 50 51 52 35 10\n26 47 60 61 62 53 36 11\n25 46 59 64 63 54 37 12\n24 45 58 57 56 55 38 13\n\
  7. 23 44 43 42 41 40 39 14\n22 21 20 19 18 17 16 15\n");
  8. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-9 13:22:25 | 显示全部楼层
不算main 前面,前面的219字符
直接print的202字符
俺就是想知道有没可能超过他
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-9-9 14:49:00 | 显示全部楼层


呵呵
都很厉害的
几位有时间开个帖子
讲点C语言的精妙
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-9 14:51:31 | 显示全部楼层
int i=5,j,s[81],t,r;for(;i<9;i++){r=2*i-9;t=r*r;s[i*9]=t;for(j=r;j>0;j--){s[9*i-j]=t-j;s[9*i-8*j]=t+j;s[72-7*i-j]=t+r+j;s[7*i-8*j+17]=t-r-j+1;}}for(i=9;i<73;i++)printf("%c%d",(1==i%8)?10:0,64-s[i]);

198,呵呵终于超过直接printf了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-9-9 15:01:11 | 显示全部楼层
我倒
这也行啊

能通过什么编译器?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-9 15:08:34 | 显示全部楼层
我用vc6

  1. test0(){
  2. int i=5,j,s[81],t,r;for(;i<9;i++){r=2*i-9;t=r*r;s[i*9]=t;for(j=r;j>0;j--){s[9*i-j]=t-j;s[9*i-8*j]=t+j;s[72-7*i-j]=t+r+j;s[7*i-8*j+17]=t-r-j+1;}}for(i=9;i<73;i++)printf("%c%d",(1==i%8)?10:0,64-s[i]);
  3. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-9-10 17:35:53 | 显示全部楼层
12345678
282930313233349
2748495051523510
2647606162533611
2546596463543712
2445585756553813
2344434241403914
2221201918171615
如图,查看$N^2$所在格子次对角线方向直线上格子,被这个各自分成两段,相邻格子的差值的差值为8,也就是我们可以将它们的值写成二次方程形式.而丢与其它格子,分别过这个格子做横线或众线交于那个次对角线,同相交格子的距离就是两个格子值的差值.
通过这个,我们可以得出一个公式解,只是公式有点复杂,需要分成四种情况
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-9-10 19:52:40 | 显示全部楼层
在网上有一个一次定位的解存在
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-11 07:54:01 | 显示全部楼层
我上面的程序就是mathe说的分4种情况的公式
11#的方法,就是一种将1-64直接映射为 (x,y)的公式
不知无心人所说的链接在哪?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-19 19:20 , Processed in 0.043808 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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