图中点的层次(宽搜框架)
#include
#include
#include
using namespace std;
const int N = 10010;
int n , m;
int h [N],e[N],ne[N],idx;
int d[N],q[N];
void add(int a ,int b)
{
e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int bfs()
{
int hh=0,tt = 0;
q[0]=1;
memset(d,-1,sizeof d);
d[1]=0;
while(hh<=tt)
{
int t=q[hh++];
for (int i =h[t];i!=-1;i=ne[i])
{
int j =e[i];
if(d[j]==-1)
{
d[j]=d[t]+1;
q[++tt] =j;
}
}
}
return d[n];
}
int main()
{
cin >>n >> m;
memset(h,-1,sizeof h );
for (int i =0;i {
int a,b;
cin >> a >> b;
add(a,b);
}
cout << bfs() << endl;
return 0 ;
}
#include
#include
#include
using namespace std;
const int N = 10010;
int n , m;
int h [N],e[N],ne[N],idx;
int d[N],q[N];
void add(int a ,int b)
{
e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int bfs()
{
int hh=0,tt = 0;
q[0]=1;
memset(d,-1,sizeof d);
d[1]=0;
while(hh<=tt)
{
int t=q[hh++];
for (int i =h[t];i!=-1;i=ne[i])
{
int j =e[i];
if(d[j]==-1)
{
d[j]=d[t]+1;
q[++tt] =j;
}
}
}
return d[n];
}
int main()
{
cin >>n >> m;
memset(h,-1,sizeof h );
for (int i =0;i
int a,b;
cin >> a >> b;
add(a,b);
}
cout << bfs() << endl;
return 0 ;
}
其中一题:
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{ string s;
int i,j,flag=0;
cin>>s;
for( i=0;i flag=0;
for(j=0;j if(s[i]==s[j]&&i!=j){flag=1;break;} }
if(!flag){cout<}
cout<<"no";
system("pause");
return 0;
}
另外一题:
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
double round(double r)
{
return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5);
}
int a[101][101],b[101][101];//先定义两个数组;
int main()
{
int n,m,i,j;
cin>>n>>m;
for( i=0;i for(j=0;j>a[i][j];}}
for( i=0;i for(j=0;j else{ b[i][j]=round((a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5.0);}}
}
for( i=0;i for(j=0;j cout< }
system("pause");
return 0;
}
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{ string s;
int i,j,flag=0;
cin>>s;
for( i=0;i
for(j=0;j
if(!flag){cout<
cout<<"no";
system("pause");
return 0;
}
另外一题:
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
double round(double r)
{
return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5);
}
int a[101][101],b[101][101];//先定义两个数组;
int main()
{
int n,m,i,j;
cin>>n>>m;
for( i=0;i
for( i=0;i
}
for( i=0;i
system("pause");
return 0;
}
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int a[100][100],b[100][100],c[100][100];//先定义两幅画的项矩阵数组;
int main()
{
int n,m,k,i,j,z;
cin>>n>>m>>k;
for( i=0;i for(j=0;j {cin>>a[i][j]; }}//遍历输入模块,形成矩阵a;
for( i=0;i for(j=0;j {cin>>b[i][j]; }}//遍历输入模块,形成矩阵b;
for( i=0;i for( j=0;j //这里是核心的算法技巧点,利用三层for循环才能实现行与列的相乘再相加,再结合累加器得的值是作为c数组的项;
}//其中引入z作为for的第三层循环变量,循环相乘和累加的作用;外层2个for循环起到摆放得到的值组成矩阵数组;
for( i=0;i for( j=0;j cout<}
system("pause");
return 0;
}
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int a[100][100],b[100][100],c[100][100];//先定义两幅画的项矩阵数组;
int main()
{
int n,m,k,i,j,z;
cin>>n>>m>>k;
for( i=0;i
for( i=0;i
for( i=0;i
}//其中引入z作为for的第三层循环变量,循环相乘和累加的作用;外层2个for循环起到摆放得到的值组成矩阵数组;
for( i=0;i
system("pause");
return 0;
}
✋热门推荐