[PAT]1046 Shortest Distance (20 分)-存储

1046.png

分析

一开始拿到这道题就准备使用暴力法去解题,后来发现超时了一个点,发现每次遍历都会重复计算,所以可以定义一个数组,0点到n点的距离存储下来,求n到m点(n

AC代码

#include
using namespace std;

int main(){
    int n;
    cin>>n;
    int dis[100010];
    int sum=0;
    for(int i=1;i<=n;i++){
        int x;cin>>x;
        sum+=x;
        dis[i]=sum;
    }
    int m;cin>>m;
    for(int i=0;i>a>>b;
        if(a>b){
            int temp=a;a=b;b=temp;
        }
        int x1=dis[b-1]-dis[a-1];
        if(x1

你可能感兴趣的:([PAT]1046 Shortest Distance (20 分)-存储)