zoukankan      html  css  js  c++  java
  • A1046

    n个节点围成一个环,每个节点之间的距离已知。输入n并给出n个节点的距离,输入m组节点编号(两个),求这两个节点编号间的最短距离。

    1 建立dis[]数组,记录V1点到每一个点的顺时针距离,sum计算环的总距离。

    2 输入m组节点编号,如果左边的值大于右边的值,则使用swap()函数将其交换。

    3 计算temp=dis[right-1]-dis[left-1],比较temp和sum-temp,输出最小的即为最短距离。

    注1:swap()函数即将两个变量交换:swap(a,b);

    注2:#include<algorithm>:包含swao()和min()两个函数的函数库,当要使用这两个函数的时候需要写在开头。

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 const int MAXN=100005;
     5 int dis[MAXN];
     6 int main(){
     7     int sum=0,tem,query,n,left, right;
     8     scanf("%d",&n);
     9     for(int i=1;i<=n;i++){
    10         scanf("%d",&tem);
    11         sum+=tem;
    12         dis[i]=sum;
    13     }
    14     scanf("%d",&query);
    15     for(int i=0;i<query;i++){
    16         scanf("%d%d",&left,&right);
    17         if(left>right) swap(left,right);//交换left和right
    18         int temp=dis[right-1]-dis[left-1];
    19         printf("%d
    ", min(temp,sum-temp)); 
    20     }
    21     
    22         return 0;
    23 } 

    ------------恢复内容结束------------

  • 相关阅读:
    java的集合框架不得不说
    Java集合框架学习总结
    Java集合框架的知识总结(1)
    Java集合框架1
    Java中常见的集合框架
    Java中的集合框架
    浅谈JAVA集合框架
    Java集合框架 看过来
    My Dream---------0.001版本
    数组(插入算法[int])
  • 原文地址:https://www.cnblogs.com/Lynn-2019/p/12073223.html
Copyright © 2011-2022 走看看