二维数组赋值,算法实现有点困难,希望得到大家指点!
已定义一维数组A[1]=1,A[2]=2,A[3]=3,A[4]=4,A[5]=5,A[6]=6,A[7]=7,A[8]=8,A[9]=9,A[10]=10现在要实现二维数组B[1][1]=A[1], B[2][2]=A[2] B[3][3]=A[3] B[4][4]=A[4] B[5][5]=A[5],……
B[1][2]=A[1]+A[2], B[2][3]=A[2]+A[3], B[3][4]=A[3]+A[4], B[4][5]=A[4]+A[5],……
B[1][3]=A[1]+A[2]+A[3], B[2][4]=A[2]+A[3]+A[4], B[3][5]=A[3]+A[4]+A[5], ……
B[1][4]=A[1]+A[2]+A[3]+A[4],B[2][5]=A[2]+A[3]+A[4]+A[5],……
即实现公式B[m][n]=A[m]+A[m+1]+……A[n-1]+A[n], m小于n。
下边是我写的代码,只能实现第一列B[1][1],B[1][2],B[1][3]……赋值,
程序代码:
#include <stdio.h> int main() { int n,m,length,sum=0; int A[11]={0,1,2,3,4,5,6,7,8,9,10}; int B[11][11]={0}; printf("输入length:"); scanf (" %d",&length); for(n=1;n<=length;n++) { for(m=1;m<=n;m++) { sum = sum+A[m]; } B[m-n][n]=sum; printf("B[%d][%d]=%d\t",m-n,n,B[m-n][n]); sum=0; } printf("\n"); return 0; }
但是B[2][2],B[2][3],……,B[11][11]不能实现赋值,请指点。