思路:处理数据用一个大矩阵表示后面计算会更加方便,如不能,则再尝试用结构体、或者多个不同类数组。
四舍五入在百分位的表示方式。最后要回到美国,那么在数组后面再加一列表示最后回到的点。
#include<iostream> #include<cstdio> using namespace std; double a[100][100]; int b[5]; int main(){ int T; cin>>T; while(T--){ int i; int n;//要去的国家数 for(int i=1;i<=5;i++) for(int j=1;j<=5;j++){ cin>>a[i][j]; } while(scanf_s("%d",&n)&&n){ b[1]=1; for(i=2;i<=n+1;i++) scanf("%d",&b[i]); b[i]=1;//因为结束国家是美国,旅游者最后要回到美国 double m; cin>>m; for(i=2;i<=n+2;i++){ m=m*a[b[i-1]][b[i]]; m=(int)(m*100+0.5); m/=100; } printf("%.2lf",m); } } return 0; }