分治法演算法思路:
使用分治設計程式時,一般可按以下步驟進行:
(1)分解:將要求解的問題劃分成若干規模較小的同類問題;
(2)求解:當子問題劃分的足夠小時,用較簡單的方法解決;
(3)合併:按求解問題的要求,將子問題的解逐層合併,即可構成最終的解。
問題:設有n位選手參賽,初賽進行n-1天,每位選手每天必須比賽一次,不能輪空。程式設計求解賽程安排。
分析:1、求n位選手的賽程安排,可採用分治演算法的思想,將問題規模不斷縮小,比如縮小到8,4,2等規模大小;
2、分析2,4,8等小規模時的賽程安排:
c語言相關**
#include#define maxn 64
int a[maxn+1][maxn+1]=;
void gamecal(int k,int n);
void gamecal(int k,int n)//處理編號k開始的n個選手的日程
else
gamecal(1,m);
printf("\n編號");
for(i=2;i<=m;i++)
printf("%2d天",i-1);
printf("\n");
for(i=1;i<=m;i++)
return 0;
}
Python筆記08 桌球隊賽程安排 回溯法
題目是 兩個桌球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽籤決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比。請程式設計序找出三隊賽手的名單 這裡我用的是回溯法,如下 def get count x return len rul x group1...
C語言 例項022 桌球比賽名單
這裡要特別注意括號,編譯時候出現過 error stray in program name author date 30 07 17 19 47 description 程式22 題目 兩個桌球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽籤決定比賽名單。有人向隊員打聽比賽的...
C語言每日練習之桌球比賽問題
目錄 兩個桌球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽籤決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請程式設計序找出三隊賽手的名單 簡單的組合問題,而且不考慮排序,如果固定a,b,c分別在0 2三個比賽隊伍,那麼兩球隊最多3種組合方式,全...