为什么6、7的测试点过不了? 以下是我的代码

#include<bits/stdc++.h>
using namespace std;
int r[205][205],f[205],n;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			r[i][j]=0;
		}
	}
	for(int i=1;i<=n-1;i++){
		for(int j=i+1;j<=n;j++){
			cin>>r[i][j];
		}
	}
	f[1]=0;
	for(int i=2;i<=n;i++){
		f[i]=INT_MAX;
	}
	for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			if(f[i]!=INT_MAX&&r[i][j]!=0){
				f[j]=min(f[j],f[i]+r[i][j]);
			}
		}
	}
	cout<<f[n]<<endl;
	return 0;
}

我到底是哪一步错了?!求100分的大佬帮助呀!!!!

2 条评论

  • @ 2025-12-21 9:43:27

    是洛谷原题吗

    • @ 2025-11-22 16:22:16

      你的代码应该是从2821复制来的, 这题只能换乘一次,而代码中从 11jj 可能已经换乘一次,再从 jjnn 可能又换乘了,这样就不行了. 总而言之,就是走了不能走的路径

      #include <bits/stdc++.h>
      
      using namespace std;
      
      int n, G[210][210], ans;
      
      int main ()
      {
      	cin >> n;
          for (int i = 1; i <= n - 1; i++)
              for (int j = i + 1; j <= n; j++)
                  cin >> G[i][j];
          
          ans = G[1][n];
          for (int k = 2; k <= n - 1; k++) ans = min(ans, G[1][k] + G[k][n]);
      
          cout << ans;
          return 0;
      }
      
      • 1

      信息

      ID
      2827
      时间
      ms
      内存
      MiB
      难度
      1
      标签
      (无)
      递交数
      24
      已通过
      47
      上传者