求图的读?有些地方看不懂,求解释,3g
#include<iostream>
#include<string>
using namespace std;
int main()
{
int a[100][100],m,n,s,t,i,j,b[100],k,count=0;
while(cin>>m>>n)
{
count++;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));这里看不懂
if(m==0&&n==0)break;
for(i=1;i<=n;i++)
{
cin>>s>>t;
a[s][t]=1;
a[t][s]=1;
}
cout<<"Case "<<count<<":";
for(i=1;i<=m;i++)//从这里开始底下的都看不怎么懂啊,求解释!!
{
k=i;
for(j=1;j<=m;j++)
b[k]= b[k]+a[k][j];
}
for(i=1;i<=m;i++)
{
cout<<i<<"-"<<b[i]<<" ";
}
cout<<endl;
}
return 0;
}
[解决办法]
#include <iostream>#include <string>using namespace std;int main(){ int a[100][100],m,n,s,t,i,j,b[100],k,count=0; while(cin>>m>>n) { count++; memset(a,0,sizeof(a)); memset(b,0,sizeof(b));/* 使用memset函数,将数组b中sizeof(b)个字节(也就是b能容纳的最大字节)的内容全部赋值为0,具体请查看memset函数的说明 */ if(m==0&&n==0)break; for(i=1;i<=n;i++) { cin>>s>>t; a[s][t]=1; a[t][s]=1; } cout<<"Case "<<count<<":"; for(i=1;i<=m;i++) {/* i的初始值为1,循环条件是i不能大于m,否则退出循环,每次循环后,i自增 1 。 */ k=i; /* 将i的值赋给k */ for(j=1;j<=m;j++)/* j的初始值为1,循环条件是j不能大于m,否则退出循环,每次循环后,j自增 1 。 */ b[k]= b[k]+a[k][j]; /* 将数组b中的第k个元素与数组a中的第k组中的第j个元素相加,并将结果赋值给数组b中的第k个元素 */ } for(i=1;i<=m;i++) { cout<<i<<"-"<<b[i]<<" "; } cout<<endl; } return 0;}