| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 419 人关注过本帖
标题:二维数组赋值,算法实现有点困难,希望得到大家指点!
只看楼主 加入收藏
shenghuoxxx
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-2-8
结帖率:100%
收藏
 问题点数:0 回复次数:5 
二维数组赋值,算法实现有点困难,希望得到大家指点!
已定义一维数组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]不能实现赋值,请指点。
2015-02-10 14:55
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
m,n是怎么确定的?

一片落叶掉进了回忆的流年。
2015-02-10 15:02
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
for (m = 1; m <= length; m++)
for (n = m + 1, B[m][m] = A[m]; n <= length; n++)
{
    B[m][n] = B[m][n - 1] + A[n];
}


[fly]存在即是合理[/fly]
2015-02-10 17:28
shenghuoxxx
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-2-8
收藏
得分:0 
回复 2楼 诸葛欧阳
也许是我没写清楚,m、n是由输入的length确定的,而length也就是从一维数组中选取的长度。
2015-02-10 22:35
shenghuoxxx
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-2-8
收藏
得分:0 
回复 3楼 azzbcc
你给的算法,我在程序中刚测试过,问题解决了,非常感谢,这回真心是学习了!
2015-02-10 22:37
赤云
Rank: 2
等 级:论坛游民
帖 子:82
专家分:35
注 册:2014-12-29
收藏
得分:0 
正确代码:
#include"stdio.h"
void f(int (*p)[11],int A[11],int i);
main(){
    int i,A[11],B[11][11],j,k=0;
    for(i=1;i<11;i++)
        A[i]=i;
    for(i=1;i<11;i++)
        f(B,A,i);
    for(i=1;i<11;i++)
       for(j=i;j<11;j++)
          printf("B[%d][%d]=%d\n",i,j,B[i][j]);
}
void f(int (*p)[11],int A[11],int i){
    int m=0,j,k;
    k=i;
    for(j=i;j<11;j++){
       do{
           m+=A[k];
           k++;
       }while((k-1)!=j);
       p[i][j]=m;
    }
}
2015-02-22 18:39
快速回复:二维数组赋值,算法实现有点困难,希望得到大家指点!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017409 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved