过了,但没完全过
查看原帖
过了,但没完全过
616059
renzecheng楼主2023/7/28 20:53

说句实话,我看不懂我的代码

当然不是抄的,世界上没人会写出这种代码

80分代码

#include<bits/stdc++.h>
using namespace std;
long long n,a[201][201];
int main()
{
	int A,B,i,j,k;
	cin>>n>>A>>B;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			a[i][j]=0x7fffffff;
		}
	}
	for(i=1;i<=n;i++)
	{
		int t;
		cin>>t;
		if(i+t<=n) a[i][i+t]=1;
		if(i-t>0) a[i][i-t]=1;
	}
        for(i=1;i<=n;i++)
	{
		a[i][i]=0;
		for(j=1;j<=n;j++)
		{
			for(k=1;k<=n;k++)
			{
				a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
			}
		}
	}
	if(a[A][B]<10000000)
	{
		cout<<a[A][B];
	}
	else
	{
		cout<<-1;
	}
	return 0;
}

100分代码

#include<bits/stdc++.h>
using namespace std;
long long n,a[201][201];
void cs()
{
	int i,j,k;
	for(i=1;i<=n;i++)
	{
		a[i][i]=0;
		for(j=1;j<=n;j++)
		{
			for(k=1;k<=n;k++)
			{
				a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
			}
		}
	}
}
int main()
{
	int A,B,i,j,k;
	cin>>n>>A>>B;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			a[i][j]=0x7fffffff;
		}
	}
	for(i=1;i<=n;i++)
	{
		int t;
		cin>>t;
		if(i+t<=n) a[i][i+t]=1;
		if(i-t>0) a[i][i-t]=1;
	}
	cs();
	cs();
	cs();
	cs();
	cs();
	if(a[A][B]<10000000)
	{
		cout<<a[A][B];
	}
	else
	{
		cout<<-1;
	}
	return 0;
}
2023/7/28 20:53
加载中...