ZJU 1058 多国家兑换货币

 

 思路:处理数据用一个大矩阵表示后面计算会更加方便,如不能,则再尝试用结构体、或者多个不同类数组。

四舍五入在百分位的表示方式。最后要回到美国,那么在数组后面再加一列表示最后回到的点。

#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;
}

 

posted on 2019-09-18 16:42  姜姜糖  阅读(98)  评论(0编辑  收藏  举报