好吧,我必须做一个以这种螺旋方式填充阵列的程序
1 2 5 10
4 3 6 11
9 8 7 12
16 15 14 13
它不像从正中心开始的正常螺旋所以我遇到了一些麻烦。数据存储位置应该是
array[0] [0]
array[0] [1]
array[1] [1]
array[1] [0]
array[0] [2]
array[1] [2]
array[2] [2]
array[2] [1]
array[2] [0]
array[0] [3]
array[1] [3]
array[2] [3]
array[3] [3]
array[3] [2]
array[3] [1]
array[3] [0]
依此类推,但是我无法想出一个适合循环使用来帮助我填写它,所以我不得不请你们帮忙
答案 0 :(得分:0)
您好希望以下代码能为您效劳。我保留printf
声明,以表明它是否存储正确的值。
#include<stdio.h>
#define MAT_DIM 4
int main()
{
int loop1,loop2;
int number = 0;
int array[MAT_DIM][MAT_DIM];
for(loop1 = 0; loop1 < MAT_DIM; loop1++)
{
for(loop2 = 0; loop2 <= loop1; loop2++)
{
array[loop2][loop1] = ++number;
printf("%d %d %d \n", loop2, loop1, array[loop2][loop1]);
}
for(loop2 = loop1-1; loop2 >= 0; loop2--)
{
array[loop1][loop2] = ++number;
printf("%d %d %d \n", loop1, loop2, array[loop1][loop2]);
}
}
return 0;
}
修改强>
代码如下:
我们需要三个loops
- 增加矩阵的尺寸(外部增量循环)
- 维度修复后,第二个循环将有助于进入下一列。 (内增量循环)
- 第三个循环将需要返回第一行。 (内部递减循环)
醇>
For First Interation: 我们正在存储1 * 1维度的数组。这里内部递减循环不起作用
For Second Interation:
loop1
变为 1 ,因此第二列将填充下一个值,直到达到第二行。
这里第二个内循环将出现在图片中。此循环将开始存储当前行的值并递减loop2
值。一旦达到零,它就会破裂。
所以我们首先使用递增循环存储列,然后使用递减循环来存储行。相同将继续,直到外循环达到循环中的维度。这里它将作为矩阵的维度达到 4 。
答案 1 :(得分:-2)
你只是做反向L。所以你需要做一个列然后一行。 见代码
`
pf = 2*stdtr(dof, -np.abs(tf))
pval = 2*stats.t.sf(np.abs(tf), dof-1)
`