演算法標籤:dfs,貪心
思路題目**
#include
int a[21][6]=;
請考慮此題用貪心的演算法來書寫試試看
之前所講過的 藍橋杯比賽中 20位籃球選手選最好的5個組成乙個隊,求得最高的能力總分值。
首先我們要弄清楚
1.球員有20人
2.一共可選的角色位置有5個
3.每個球員不同位置的分數都不同
綜上,我們肯定試圖貪心找最大,但我們會發現問題,如果找每個位子上最高值,會出現人員重複的情況。
眾所周知,在唯物主義的現實世界當中乙個人無法在球賽中變成兩個人,因為這樣盲目貪心的思路並不可取。
既然我們無法直接用簡單貪心,我們取用思路即可
爆搜所有可能,貪心的找分數最大的組合即可
#include
using
namespace std;
int a[21]
[6]=
;int
max(
int a,
int b)
void
dfs(
int u,
int n,
int&sum,
int row,
int col)
//u當前選擇到第幾個位置,n當前總和,sum雖有可能中的最大值
//>col 即表明選擇完畢之後,更新最大值
for(
int i =
1; i <= row; i++
)//所有隊員的爆搜
if(a[i][0
])//這裡為了方便,初始化是非零,使用後狀態標記為0,即非零表明沒被占用,零表示為被占用
}int
main()
組隊學習 分治演算法 打卡
將原本複雜的問題,拆分成相同解決方法的簡單的小問題,然後將小問題的答案歸併成初始問題的解。採用遞迴的方式,將問題層層分解,直到子問題滿足設定好的終止條件結束遞迴求解子問題的解,然後將解歸併。示意圖如下 示例1 輸入 3,2,3 輸出 3 示例2 輸入 2,2,1,1,1,2,2 輸出 2 首先想到的...
《演算法競賽高階指南》小組佇列
有n個小組要排成乙個佇列,每個小組中有若干人。當乙個人來到佇列時,如果佇列中已經有了自己小組的成員,他就直接插隊排在自己小組成員的後面,否則就站在隊伍的最後面。請你編寫乙個程式,模擬這種小組佇列。輸入格式 輸入將包含乙個或多個測試用例。對於每個測試用例,第一行輸入小組數量t。接下來t行,每行輸入乙個...
演算法實驗課
ps 開玩笑的,請隨意 1.格雷碼構造問題 分治法 分治法 the sample input 4the sample output 1111 0111 0011 1011 1001 0001 0101 1101 1100 0100 0000 1000 1010 0010 0110 1110 incl...