首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

输出N×N的zigzag数组 算法思想 代码如上

2012-09-10 
输出NN的zigzag数组 算法思想 代码如下C/C++ code /*01561415272824713162629423812172530414391118243140

输出N×N的zigzag数组 算法思想 代码如下

C/C++ code
 /*    0     1     5     6    14    15    27    28     2     4     7    13    16    26    29    42     3     8    12    17    25    30    41    43     9    11    18    24    31    40    44    53    10    19    23    32    39    45    52    54    20    22    33    38    46    51    55    60    21    34    37    47    50    56    59    61    35    36    48    49    57    58    62    63*/#include <iostream>using namespace std;int main(){int N;int s,i,j;int squa;cin>>N;int **a = (int **) malloc(N*sizeof(int));if(a == NULL)   return 0;for(i=0;i<N;i++){   if((a[i] = (int *)malloc(N*sizeof(int)))==NULL)   {    while(--i>=0)     free(a[i]);    free(a);    return 0;   }}squa = N*N;for(i=0;i<N;i++)   for(j=0;j<N;j++)   {    s = i+j;    if(s<N)     a[i][j] = s*(s+1)/2 + (((i+j)%2 == 0)?i:j);        //基于什么样的思想,说明一下    else    {     s = (N-1-i) + (N-1-j);     a[i][j] = squa -s*(s+1)/2-(N-(((i+j)%2 == 0)?i:j));//基于什么样的思想,说明一下    }   }for(i=0;i<N;i++){   for(j=0;j<N;j++)    printf("%6d",a[j][i]);   printf("\n");}return 0;}


[解决办法]
不是基于什么思想,就是这个数组每一项的值与数组下标之间的关系.

热点排行