| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 930 人关注过本帖
标题:[讨论]再论方阵问题(更难了)
只看楼主 加入收藏
我是拉登
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2004-7-20
收藏
 问题点数:0 回复次数:7 
[讨论]再论方阵问题(更难了)

请编一个程序,只需输入一个边长数n,就会出现两个螺旋矩形,例如,若输入6,则出现:

13 14 15 16 17 18

12 5 6 7 8 9

11 4 1 2 3 10

10 3 2 1 4 11

9 8 7 6 5 12

18 17 16 15 14 13

谢了。

[此贴子已经被作者于2004-08-06 17:04:22编辑过]

搜索更多相关主题的帖子: 方阵 
2004-08-06 17:02
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
收藏
得分:0 
先找出规律啊

我的主页 http://www.
2004-08-07 08:59
wanyy1228
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2004-8-8
收藏
得分:0 

2楼能告诉我有什么规律吗?

谢谢!


2004-08-08 09:41
proton
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2004-7-30
收藏
得分:0 

规律是自己想的.

告诉你吧,看对角线,(从左下到右上的那一条),X=(所在圈边长的平方)/2;


Never was and never will be
2004-08-08 10:40
proton
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2004-7-30
收藏
得分:0 

程序:

#include <stdio.h> #include <conio.h> char key='y'; int n=0;

unsigned long complete(int x,int y); void come(); unsigned long min(int d,int f);

main() { while(key=='y'||key=='Y') {come(); printf("\nDo you want to continue?(y/n)\n"); key=getche(); } }

void come() { int i=0,j=0; printf("\nInput the N.(the real length will be 2*N)\n"); scanf("%d",&n); n*=2; printf("\n"); for(i=0;i<n;i++) {for(j=0;j<n;j++) {printf("%d\t",complete(j,i));} printf("\n"); } }

unsigned long min(int d,int f) { unsigned long c; c=d>f?f:d; return (c); }

unsigned long complete(int x,int y) { unsigned long mx=0,my=0,base1=0,base2=0,mm=0,mn=0,re=0; mx=min(x,n-x-1); my=min(y,n-y-1); {int nm=0,m=0,k=0; nm=min(mx,my); k=(n-2*nm); base1=k*k/2; base2=base1-(n-1-2*nm); }

if(x==y) re=base1; else if(mx==my) re=base2; else if(my<mx) { if(my==y) re=base1-(x-my); else re=base1-(n-1-my-x); } else //(mx<my) { if(mx==x) re=base2-(n-1-mx-y); else re=base2-(y-mx); } return (re); } (经测试)


Never was and never will be
2004-08-08 10:59
wonderfulday
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2004-7-28
收藏
得分:0 

proton可否说一下算法


2004-08-11 10:36
fastmouse
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2004-8-9
收藏
得分:0 

只要算好行列的位置就可以了,这个不难吧

2004-08-11 11:35
proton
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2004-7-30
收藏
得分:0 
     现判断所在圈数,再算所在圈右下角(左上角)数的大小(base)。再判断其与base的距离。加上或减掉距离即可。

Never was and never will be
2004-08-14 10:16
快速回复:[讨论]再论方阵问题(更难了)
数据加载中...
 
   



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

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