中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

真題算法考點

發布時間:2020-08-09 06:39:39 來源:ITPUB博客 閱讀:116 作者:flzhang 欄目:編程語言

鋼板填坑問題
路面有n個坑,需要用m個鋼板蓋住
m個鋼板錢不一樣,尺寸不一樣
 固定給出m個鋼板,看怎么組合能用總費用最少的鋼板蓋住所有坑
例 
 2 3
  50 80
  50 5 90 3 80 4


結果1 7
給定2個坑,3個鋼板
 每個坑的直徑
 每個鋼板的直徑和費用且成對出現
 最后計算是第一個案例,最少使用的費用是7
思路是按費用排序,每次最少費用的鋼板該直徑最大的坑,保證這一個鋼板肯定只能蓋住這一個坑。這樣后面的鋼板
 也能對應蓋一個坑
 3
  2 3
  50 80
  50 5 90 3 80 4
  3 5
  50 80 40
  50 5 79 3 70 4 75 7 40 5
  5 10
  50 40 50 60 50
  50 54 60 11 45 22 49 51 35 16 80 53 70 1 80 99 90 84 55 23
給定框架
package sasst.web;
import java.util.Scanner;
public class Solution {
 static int N,M;
   static int Hi[] = new int[1000];
   static int Si[] = new int[10000];
   static int Pi[] = new int[10000];
   public static void main(String[] args) {
    Scanner sc= new Scanner(System.in);
    int T = sc.nextInt();
    for(int test_case =1;test_case<=T;++test_case){
     N=sc.nextInt();
     M=sc.nextInt();
     for(int i = 0;i     Hi[i]=sc.nextInt();
     }
     for(int i =0; i     Si[i]=sc.nextInt();
      Pi[i]=sc.nextInt();
     }
     System.out.println();
     System.out.println("keng size ");
     for(int i = 0;i     System.out.print(Hi[i]+" ");
     }
     System.out.println();
     System.out.println("gangban ");
     
     for(int i =0; i     System.out.print(Si[i]+" "+Pi[i]+" ");
     }
     System.out.println();
    }
   }
  }


具體實現
 注意
 前面數組構造時的長度,改成N,M,而不是1000具體值,以防后面比較時數組中出現大量0影響排序結果
new時候的語句要在輸入以后,而不是最上面聲明
import java.util.Arrays;
 import java.util.Comparator;
 import java.util.Scanner;
public class Solut {
 static int N,M;
  static int Hi[];
  static int Si[];
  static int Pi[];
  static MtDate[] mtDate;
  public static void main(String[] args) {
   Scanner sc= new Scanner(System.in);
   int T = sc.nextInt();
   for(int test_case =1;test_case<=T;++test_case){
    N=sc.nextInt();
    M=sc.nextInt();
    Hi = new int[N];
    for(int i = 0;i     Hi[i]=sc.nextInt();
    }
    
    Si=new int[M];
    Pi=new int[M];
    mtDate = new MtDate[M];
    for(int i =0; i     Si[i]=sc.nextInt();
     Pi[i]=sc.nextInt();
     mtDate[i]=new MtDate();
     mtDate[i].Si = Si[i];
     mtDate[i].Pi = Pi[i];
    }
    Comparator mt = new MyT();
    Arrays.sort(mtDate,mt);
    Arrays.sort(Hi);
    int price = 0;
    for(int i=N-1;i>=0;i--){
     int t = getPrice(Hi[i]);
     if(t>0)price=price+t;
     else {price=-1; break;}
    }
    System.out.println();
    System.out.print(test_case+","+price);
    
    
   }
  }
  
   static int getPrice(int hhi)
  {
   for(int i=0;i    if(mtDate[i].Si>=hhi&&!mtDate[i].used){
     mtDate[i].used=true;
     return mtDate[i].Pi;
    }
   }
   return -1;
  }
 }
class MtDate{
  public int Si,Pi;
  public boolean used= false;
  
 }
class MyT implements Comparator{
  public int compare(MtDate o1,MtDate o2){
   if(o1.Pi    return -1;
   }else if(o1.Pi>o2.Pi){
    return 1;
   }else{
    return 0;
   }
  }
 }


20170713 真算法
查找避難所個數
1 2 3 7 8 9
2 9 8 6 5 2
2 3 2 5 6 7
1 2 3 2 6 8
2 3 1 5 7 9
如上面數組,每行值表示海拔高度,發大水時尋找緊急避難所,需要根據海拔高度判斷
避難所的最大個數。
給定測試用例
5 5 7 數組的長和寬 7是洪水高度
然后找避難所時,避難所得海拔高度要高于即>洪水高度。符合要求的避難所必須是在其
上下左右至少一個方向里也有一個符合要求的避難所。同時重要的是還要找到避難所的最大
個數。比如這里洪水高度是7,那么8和9符合要求,但矩陣中有多個8和9,這是相當于有
三處避難所,而每個避難所的個數都是2,因此找出的避難所個數最大是2.可想如果矩陣
中有一處是8和9,10,另一處是8和9,那么最大避難所的個數是3而不是2.
自己的實現思路是雙循環,每一個元素查找時判斷前后左右四個方向是不是有挨著的。
如果判斷這個值符合條件,就繼續判斷這個值得坐標和遷移符合要求的元素的值坐標
是不是挨著如果挨著計數器繼續增加,不挨著計數器將為0,這樣找出最大的count。
注意 尋找前一個坐標是要初始化prei=-1,prej=-1 因此第一個符合條件的值的坐標count++,prei=i,prej=j
以后符合條件值的坐標要判斷該點坐標和前一個點坐標是否挨著再count++,且prei=i,prej=j




20170727
32位字符數,如10000000000000000000000000000000 和 00000000000000000000000000000001
左邊的數中1可以向左或向右移動,問向哪邊移動次數最少可以移動成為右邊的數字
移動結果L 1 向左移動一次是右面數字
0000000000000000000000000010101 0000000000000000000000000000001
左面沒法移動成右面所以結果是 -1


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西平县| 柘荣县| 砀山县| 东海县| 高唐县| 林西县| 北安市| 邯郸县| 阿合奇县| 清远市| 平和县| 绥化市| 甘谷县| 旺苍县| 诸暨市| 驻马店市| 涿鹿县| 绥德县| 花莲市| 民权县| 化州市| 皋兰县| 凤城市| 东乡县| 金阳县| 嘉鱼县| 佳木斯市| 兴和县| 万安县| 常山县| 白朗县| 视频| 乌什县| 稻城县| 新绛县| 瑞丽市| 梅州市| 寿阳县| 武隆县| 禄劝| 新化县|