查看单个帖子
旧 2009-03-27, 21:48   #3
laosam280
高级会员
 
注册日期: 2008-11-07
住址: 湖南长沙
帖子: 233
声望力: 21
laosam280 正向着好的方向发展
默认 回复: [求助]如何把一个包含0和1的矩阵中的相邻的1都加起来

你的这个问题实在不难,但是还是忙活了我一下午。我用c++和matlab写了,但是总体而言matlab更直接,但是c++写出来更快,呵呵,循环太多了,效率不高,仅供你参考。
#include<iostream>
#define M 5
#define N 8
using namespace std;
int main()
{int a[M][N]={{1,0,1,0,1,0,1,1},
{1,0,1,1,1,0,1,0},
{1,0,1,1,1,0,1,1},
{1,0,1,0,1,0,1,0} ,
{1,0,1,0,1,0,1,0}};
}
int max=0;
for(int j=0;j<M;j++)
{
int count=0;
int flag=1;
for(int i=0;i<N;i++)
{
if(a[j][i]==1&&flag)
{ count++; flag=0;}
if(a[j][i]==0)
flag=1;
}
if(max<count)
max=count;
}

for(int i=0;i<M;i++)
{ int CL=0;int k=0;
for(int j=0;j<N;j++)
{

if(a[i][j]==1)
k++;
else
{ if(k!=0)
{ cout<<k<<" "; CL++;
k=0;


}
}
}
if(k!=0)
{ cout<<k<<" "; CL++;
k=0;


}
while (CL++<max)
cout<<"0 ";
cout<<endl;
}
return 0;
}
PS: 关于矩阵,我定义了宏M和N为其维度。到时候你只要修改输入的矩阵和M和N的值就可以了。
laosam280 当前离线   回复时引用此帖