首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

面试题,有点难,求高手解决方法

2012-03-23 
面试题,有点难,求高手面试题,有点难,求高手螺旋数字队列21 22 ……20 7891019 6121118 5431217 16 15 14 13

面试题,有点难,求高手
面试题,有点难,求高手

螺旋数字队列

21 22 ……
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13


看清上述数字的规律
以数字1为原点,X轴向右为正,y轴向上为正,建立数轴
那么数字2的坐标为(1,0),数字9的坐标为(1,1),数字5的坐标为(-1,-1)
现在编程实现输入一点(x,y),输出这点在数轴上对应的值

[解决办法]

探讨
发一份给我啊,邮箱:zengnengxin@163.com,谢谢

[解决办法]
我也给一个,偶这个方法不错。不过不是首创,不过打印基本蛇形队列的想法都可以这样。遇到其他的改改就行了
C/C++ code
#include <iostream>#include <iomanip>#include <algorithm>using namespace std;int main(){    int n ;//    cin>>n;    n=5;    int **a = new int *[n];    for(int t=0;t<n;t++)        a[t] = new int[n];    for(int i=0; i<n;i++)    {        for(int j=0; j<n;j++)            a[i][j] = 0;    }    i=0;    int j=n-1;    int di=0;    int dj=-1;    for(int it = n*n; it>=1; it--)    {        a[i][j]=it;        if(i+di>n-1||j+dj>n-1||j+dj<0||i+di<0||a[i+di][j+dj])        {            dj = -dj;            swap(di,dj);                    }        i+= di;        j+= dj;    }    for(i= 0; i<n;i++)    {        for(j=0;j<n;j++)            cout<<setw(3)<<a[i][j];        cout<<endl;    }    cout<<endl;    delete []a;    return 0;}
[解决办法]
楼主;多写几圈,相信你自己就能看出规律了
[解决办法]
#include<stdio.h>

#define N 8

main()
{
int i,j,n=1,a[N][N];

for(i=0;i<=N/2;i++) // i 表示第几层
{
for(j=i;j<N-i;j++)
a[i][j] = n++;

for(j=i+1;j<N-i;j++)
a[j][N-i-1] = n++;

for(j=N-i-2;j>i;j--)
a[N-i-1][j] = n++;

for(j=N-i-1;j>i;j--)
a[j][i] = n++;

}
for(i=0;i<N;i++){
printf("\n\n");

for(j=0;j<N;j++)
printf("%5d",a[i][j]);
}
}

热点排行