zoukankan      html  css  js  c++  java
  • 2253Frogger

    1.sort函数-----

    2.cmpile error-----

    3.C++输出指定位数的小数

    4.runtime error:

    我的代码用了SPFA算法,不过runtime error了,可能是数组越界,死循环。但是我不知道怎么错的

    #include "iostream"
    #include "queue"
    #include "string.h"
    #include "algorithm"
    #include "cmath"
    #include <iomanip>
    using namespace std;
    struct{
      int x,y;
    }stone[210];
    
    struct node{
      int s,e,l;
    }longth[20000];
    bool cmp(node x,node y){
     return x.l<y.l;
    }
    int pos=0;
    float longest;
    int set[20000];
    
    bool SPFA(){
     int i,flag;
     queue<int>Q;
     memset(set,0,sizeof(set));
     Q.push(1);
     set[1]=1;
     while(!Q.empty()){
           flag=Q.front();
           Q.pop();
            for(i=0;i<pos;i++){
               if(longth[i].s==flag&&longth[i].l<=longest&&!set[longth[i].e]){
                 Q.push(longth[i].e);
                 set[longth[i].e]=1;
               }
            }
        }
      if(set[2])return 1;
      else return 0;
    }
    
    
    int main(){
      int num,i,j,Case=1;
      float d;
      while(cin>>num&&num){
        pos=0;
        for(i=1;i<=num;i++){
        cin>>stone[i].x>>stone[i].y;
        }
        for(i=1;i<num;i++){
          for(j=i+1;j<=num;j++){
            longth[pos].s=i;longth[pos].e=j;longth[pos].l=(stone[i].x-stone[j].x)*(stone[i].x-stone[j].x)+(stone[i].y-stone[j].y)*(stone[i].y-stone[j].y);
            pos++;
            longth[pos].s=j;longth[pos].e=i;longth[pos].l=longth[pos-1].l;
            pos++;
          }
        }
        sort(longth,longth+pos,cmp);
        for(i=0;i<pos;i++){
           longest=longth[i].l;
           if(SPFA()){
               d=sqrt(longest);
               cout<<"Scenario #"<<Case++<<endl<<"Frog Distance = "<<fixed<<setprecision(3)<<d<<endl;goto l1;}
        }
    l1:;
      }
    }

    网上的答案,用了dijkstra算法

    #include<iostream>
    #include <cmath>
    #include <iomanip>
    using namespace std;
    
    #define MaxNum 1e8 
    int main()
    {
        int n, start, tempS;
        bool visited[205];
        double dist[205];
        double  minDist, tempDist;
        int cases = 0;
        struct  
        {
            int x, y;
        }p[205];
    
        while (cin >> n && n)
        {
            cases++;
            memset(visited, 0, sizeof(bool) * 205);
            fill(&dist[0], &dist[204], MaxNum);
    
            for (int i = 0; i < n; i++)
                cin >> p[i].x >> p[i].y;
    
            visited[0] = true;
            dist[0] = 0;
            start = 0;
    
            for (int i = 0; i < n; i++)
            {
                minDist = MaxNum;
                for (int j = 0; j < n; j++)
                {
                    if (!visited[j])
                    {
                        tempDist = pow(double(p[start].x - p[j].x), 2);
                        tempDist += pow(double(p[start].y - p[j].y), 2);
                        tempDist = sqrt(tempDist);
                        tempDist = max(tempDist, dist[start]);
                        dist[j] = min(dist[j], tempDist);
    
                        if (minDist > dist[j])
                        {
                            minDist = dist[j];
                            tempS = j;
                        }
                    }
                }
                start = tempS;
                visited[start] = true;
                if (start == 1)
                    break;
            }
            if (cases != 1)
                cout << "
    ";
            cout << "Scenario #" << cases << endl;
            cout << "Frog Distance = " << fixed << setprecision(3) << dist[1] << endl;
        }
        return 0;
    }
  • 相关阅读:
    3.Appium运行时出现:Original error: Android devices must be of API level 17 or higher. Please change your device to Selendroid or upgrade Android on your device
    3.Python连接数据库PyMySQL
    2.Python输入pip命令出现Unknown or unsupported command 'install'问题解决
    2.Linux下安装Jenkins
    5.JMeter测试mysql数据库
    Android 4学习(7):用户界面
    Android 4学习(6):概述
    Android 4学习(5):概述
    Android 4学习(4):概述
    Android 4学习(3):概述
  • 原文地址:https://www.cnblogs.com/dowson/p/3252058.html
Copyright © 2011-2022 走看看