| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8910 人关注过本帖
标题:关于二维数组求和的最佳算法
只看楼主 加入收藏
qzy051203055
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-8-24
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:7 
关于二维数组求和的最佳算法
想知道求二维数组的和的最佳算法或者比较好的算法。像一般的两个for循环的在下晓得,就想知道有没好点的。谢谢了
搜索更多相关主题的帖子: 求和 算法 
2010-06-12 11:40
kettle99
Rank: 2
等 级:论坛游民
帖 子:52
专家分:54
注 册:2010-5-25
收藏
得分:2 
没有其他更好的办法吧,必须是两个FOR循环,一个循环求一行的值,一个循环求总的值
2010-06-12 12:07
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1685
专家分:4252
注 册:2007-12-27
收藏
得分:2 
从原理上讲,用一个元素指针指向数组元素,一边累加指针目标,一边指针自加,这样效率比常规写法高一点点。
但是效率提高有限,不值得为这一点点提高去费力气。

[ 本帖最后由 forever74 于 2010-6-12 16:31 编辑 ]

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-06-12 16:30
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:2 
直接一个 sum = a[0][0] + a[0][1].........省去了不必要的循环。 会不会快点

我就是真命天子,顺我者生,逆我者死!
2010-06-12 18:08
张君
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:57
专家分:113
注 册:2010-5-13
收藏
得分:2 
先把二维数组转化为一维数组,在求和,可是我编的程序有错误:
#include <stdio.h>
main()
{
int a[3][3],b[9];
int i,j,k,sum=0;
clrscr();
for(i=0;i<3;i++)
  {
  for(j=0;j<3;j++)
     scanf("%d",&a[i][j]);
    for (k=0;k<9;k++)
      b[k]=a[i][j];
  }
for(k=0;k<9;k++)
 {
 sum=sum+b[k];

 }
 printf("sum=%d",sum);
}

做自己就好,保持自己,记得微笑
2010-06-13 09:14
zhjr5201314
Rank: 4
等 级:业余侠客
帖 子:63
专家分:238
注 册:2009-9-10
收藏
得分:2 
for(i=0;i<3;i++)
  {
  for(j=0;j<3;j++)
     scanf("%d",&a[i][j]);
    for (k=0;k<9;k++)
      b[k]=a[i][j];
  }
循环有错
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{   
   scanf("%d",&a[i][j]);
   b[k]=a[i][j];
   k++;
}
k再在定义是初始化    int i,j,k=0,sum=0;就可以了
2010-06-13 11:04
BJ_BOY
Rank: 4
等 级:业余侠客
威 望:1
帖 子:77
专家分:225
注 册:2010-2-4
收藏
得分:2 
我用一个一重循环实现的代码如下,非常简单!

#include <stdio.h>
#include <stdlib.h>
#define ROW 3
#define COL 4

int main(void)
{
    int a[ROW][COL] = {1,2,3,4,5,6,7,8,9,10,11,12};
    int sum = 0;
    int i = 0;
    for(i = 0; i < ROW*COL; ++i)
    {
        sum += a[i/COL][i%COL];    /*大家得稍微思考一下才可得知为什么, 呵呵*/
    }

    printf("sum = %d\n", sum);
   
    system("PAUSE");
    return 0;

}
2010-06-13 22:22
湖山觐
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2010-6-14
收藏
得分:2 
#include<stdio.h>
#define N 3
void main()
{
    int i,j,t=0,a[N][N];
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
        {
            scanf("%d",&a[i][j]);
            t+=a[i][j];
        }
    }
    printf("%d\n",t);
}
2010-06-14 22:33
快速回复:关于二维数组求和的最佳算法
数据加载中...
 
   



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

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