当前位置: 代码迷 >> C语言 >> 数字旋涡问题
  详细解决方案

数字旋涡问题

热度:291   发布时间:2008-03-15 18:55:08.0
数字旋涡问题
老师出了一道题,但是想了三个点没想出来
题是这样的,假如输入2
输出12
    43
输入3
输入123
    894
    765
很难呀!     帮忙解决一下
搜索更多相关的解决方案: 旋涡  数字  

----------------解决方案--------------------------------------------------------
如果是4呢?
----------------解决方案--------------------------------------------------------
是螺旋数字方阵吧,是个顺时针的.很久前写过个
#include <stdio.h>
#include <stdlib.h>
int movei[4]={1,0,-1,0};
int movej[4]={0,1,0,-1};
int print(int*,int);
int clock(int,int *);                                             
int print(int *pa,int n){            
    int i,j;                                          
    for(i=0;i<=n-1;i++){                                 
       for(j=0;j<=n-1;j++)
          printf("%4d",*(pa+i*n+j));
       printf("\n");
    }
    printf("\n");
    return 0;
}
int clock(int n,int *a){
    int i=0,j=0,t=1,x1=n,y1=n,x2=-1,y2=0,direct=1;
    while(t<=n*n){
                  *(a+i*n+j)=t++;
                  i+=movei[direct];
                  j+=movej[direct];
                  if(j==x1&&i==y2){
                                  j--;
                                  i++;
                                  direct=0;
                                  x1--;
                                  continue;
                                 
                  }
                  if(j==x1&&i==y1){
                                   j--;
                                   i--;
                                   y1--;
                                   direct=3;
                                   continue;
                  }
                  if(j==x2&&i==y1){
                                   j++;
                                   i--;
                                   x2++;
                                   direct=2;
                                   continue;
                  }
                  if(j==x2&&i==y2){
                                   i++;
                                   j++;
                                   y2++;
                                   direct=1;
                  }
    }                                
    return 0;
}                                                                                                                 
int main()
{
  int a[900]={0},n;
  scanf("%d",&n);
  clock(n,&a[0]);
  print(&a[0],n);
  system("PAUSE");    
  return 0;
}
----------------解决方案--------------------------------------------------------
这个是程序员考试书上的..可以去找看看啊
----------------解决方案--------------------------------------------------------
感觉步骤这么多呢?
----------------解决方案--------------------------------------------------------
也没有输入的!
怎么搞的,好像很难的样子!
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]ggggiaqgyd[/un] 在 2008-3-15 19:36 的发言:[/bo]

也没有输入的!
怎么搞的,好像很难的样子!

什么叫也没有输入的?
----------------解决方案--------------------------------------------------------
假如输入5那就是5*5的方阵呀
----------------解决方案--------------------------------------------------------
我写的那个应该没有问题
----------------解决方案--------------------------------------------------------
考点是考算法吗?
----------------解决方案--------------------------------------------------------
  相关解决方案