真題演算法考點
鋼板填坑問題
路面有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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/750077/viewspace-2141065/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 或許是2018演算法考試的真題演算法
- Google人工智慧面試·真·題(附參考答案+攻略)Go人工智慧面試
- 【Java 開發面試】Mysql 面試考點/考題彙總Java面試MySql
- 面試常考演算法題之並查集問題面試演算法並查集
- Linux 運維工程師面試真題-5-常考題目彙總Linux運維工程師面試
- 2011年架構師考試真題理解(筆記)架構筆記
- 軟考|網路工程師複習資料、附歷年真題、詳細學習筆記,考試重點,看過的人都能過!工程師筆記
- 前端面試題整理——webpack相關考點前端面試題Web
- 主要考點
- 大廠常考動態規劃演算法題動態規劃演算法
- 演算法題:頂點覆蓋問題演算法
- 一道JAVA 考試題 請高手指點Java
- 2017年11月軟考網路工程師上午真題解析軟考視訊軟考培訓課程-徐朋-專題視訊課程...工程師
- 演算法題系列:頂點覆蓋問題演算法
- 篩選系統架構設計師考試上午綜合知識易錯常考真題,及詳細解答架構
- 大前端常見面試題:HTML常考知識點前端面試題HTML
- 2019年6月四六級備考資料/四六級真題分享
- 面試考題面試
- 軟考15——演算法演算法
- 最考驗換位思考的一道演算法題演算法
- 二分查詢(JS解法)——高頻面試演算法題(百度真題)JS面試演算法
- 「查缺補漏」高頻考點瀏覽器面試題瀏覽器面試題
- php面試考點整理PHP面試
- 駕考知識點
- 2017 校招常考演算法題歸納 & 典型題目彙總演算法
- csp-s真題題解
- TOEIC真題學習
- 藍橋杯真題
- 聯考題解
- 樹上交換節點(OPPO23屆秋招-後端真題)後端
- C/C++期末考試複習---知識點+習題C++
- C++複習考點C++
- 多執行緒考點執行緒
- JavaScript面試核心考點(精華)JavaScript面試
- 面試考點系列【集合】(一)面試
- 前端知識點參考前端
- php 知識點參考PHP
- MHA知識點參考