貪心演算法主要思路
①建立數學模型模擬問題
②拆分問題尋找區域性最優解
③集合區域性解
description
乙個旅行家想駕駛汽車以最少的費用從乙個城市 到另乙個城市(假設出發時油箱是空的)。給定兩個城市之間的距離d1、汽車油箱的容量c(以公升為單位)、每公升汽油能行駛的距離d2、出發點每公升汽油**p 和沿途油站數n(n可以為零),油站i離出發點的距離di、每公升汽油**pi(i=1,2,……n)。計算結果四捨五入至小數點後兩位。如果無法到達目的 地,則輸出「no solution」。
input
第一行為4個實數d1、c、d2、p與乙個非負整數n;
接下來n行,每行兩個實數di、pi。
output
如果可以到達目的地,輸出乙個實數(四捨五入至小數點後兩位),表示最小費用;否則輸出「no solution」(不含引號)。
sample input
275.6 11.9 27.4 2.8 2
102.0 2.9
220.0 2.2
sample output
26.95
#include
using
namespace std;
double d[
1000001
],p[
1000001
],d1,v,c,p1,cost,oilremain,dis;
int n,sta,i;
intmain()
flag=1;
//標記找到
sta=i;
//防止sta受影響
break;}
}if(!flag)
//找到的話繼續do迴圈找是否還有更便宜的,沒找到則繼續 }}
while
(sta;printf
("%.2lf\n"
,cost)
;return0;
}
description
回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。
小龍龍認為回文串才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美的回文串。
交換的定義是:交換兩個相鄰的字元
例如: mamad
第一次交換 ad : mamda;
第二次交換 md : madma;
第三次交換 ma : madam (回文!完美!)
input
第一行是乙個整數n,表示接下來的字串的長度(n ≤ 8000)。
第二行是乙個字串,長度為n.只包含小寫字母。
output
如果可能,輸出最少的交換次數。
否則輸出impossible。
sample input
5mamad
sample output
#include
using
namespace std;
int i,j,n,flag,ans;
string a;
intmain()
flag++
; ans+
=n/2
-i;//如有無法配對字元最後再交換(可直接不交換)
}else
if(a[i]
==a[j]
) l--
;//又配好一對,匹配範圍縮小
break;}
}}cout
}
小明正在玩乙個「翻硬幣」的遊戲。
桌上放著排成一排的若干硬幣。我們用 * 表示正面,用 o 表示反面(是小寫字母,不是零)。
比如,可能情形是:oo*oooo
如果同時翻轉左邊的兩個硬幣,則變為:oooo***oooo
現在小明的問題是:如果已知了初始狀態和要達到的目標狀態,每次只能同時翻轉相鄰的兩個硬幣,那麼對特定的局面,最少要翻動多少次呢?
我們約定:把翻動相鄰的兩個硬幣叫做一步操作,那麼要求:
input
兩行等長的字串,分別表示初始狀態和要達到的目標狀態。每行的長度<1000。
output
乙個整數,表示最小操作步數。
sample input
oo
sample output
主要思想
兩種狀態中只能有雙數不一樣狀態的硬幣,然後兩兩配對挨個翻
#include
using
namespace std;
intmain()
else
if(flag==
0&&a[i]
!=b[i]
)//尾
} cout
}
第三次作業
2 12有600 mb 兆位元組 的資料,需要從南京傳送到北京。一種方法是將資料寫到磁碟上,然後託人乘火車這 些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率為2.4kb s 傳送此資料。試比較這兩種方法的優劣。若資訊傳送速率為33.6kb s,其結果又如何?解 當傳送速率為2.4k...
第三次作業
1 有600mb 兆位元組 的資料,需要從南京傳送到北京 一種方法是將資料寫到磁碟上,然後託人乘火車將這些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率為2.4kb s 傳送此資料,試比較這兩種方法的優劣。若資訊傳送的速率為33.6kb s,其結果又如何?解 假定連續傳送且不出錯。若...
第三次作業
p67 2 12 有600mb的資料,需要從南京傳送到北京。一種方法是將資料寫到磁碟上,然後託人乘火車將這些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率是2.4kbps 傳送此資料。試比較這兩種方法的優劣。若資訊傳送速率為33.6kbps,其結果又如何?解 1 t 600 1024...