某保密單位機要人員 a,b,c,d,e 每週需要工作5天,休息2天。
上級要求每個人每週的工作日和休息日安排必須是固定的,不能在週間變更。
此外,由於工作需要,還有如下要求:
1. 所有人的連續工作日不能多於3天(注意:週日連到下周一也是連續)。
2. 一周中,至少有3天所有人都是上班的。
3. 任何一天,必須保證 a b c d 中至少有2人上班。
4. b d e 在週日那天必須休息。
5. a e 週三必須上班。
6. a c 一周中必須至少有4天能見面(即同時上班)。
你的任務是:編寫程式,列出abcde所有可能的一周排班情況。工作日記為1,休息日記為0
a b c d e 每人占用1行記錄,從星期一開始。
【輸入、輸出格式要求】
程式沒有輸入,要求輸出所有可能的方案。
每個方案是5*7的矩陣。只有1和0組成。
矩陣中的列表示星期幾,從星期一開始。
矩陣的行分別表示a,b,c,d,e的作息時間表。
多個矩陣間用空行分隔開。
例如,如下的矩陣就是乙個合格的解。請程式設計輸出所有解(多個解的前後順序不重要)。
0110111
1101110
0110111
1101110
1110110
public
class
main ,,,
,};
//每週需要工作5天,休息2天。
public
static
boolean
fun0()
if(cnt!=5) return
false;
}return
true;
}//1. 所有人的連續工作日不能多於3天(注意:週日連到下周一也是連續)。
public
static
boolean
islonger(int i)
}if(cnt==4) return
true;
}return
false;
}public
static
boolean
fun1()
return
true;
}//2. 一周中,至少有3天所有人都是上班的。
public
static
boolean
isfull(int j)
return
true;
}public
static
boolean
fun2()
if(cnt>=3) return
true;
return
false;
}//3. 任何一天,必須保證 a b c d 中至少有2人上班。
public
static
boolean
isabcd(int j)
if(cnt>=2) return
true;
return
false;
}public
static
boolean
fun3()
return
true;
}//4. b d e 在週日那天必須休息。
public
static
boolean
fun4()
// 5. a e 週三必須上班。
public
static
boolean
fun5()
// 6. a c 一周中必須至少有4天能見面(即同時上班)。
public
static
boolean
fun6()
if(cnt>=4) return
true;
return
false;
}public
static
void
show()
system.out.println();
}public
static
void
main(string args)
}}
首先,拿到這道題時應先根據題意列出初始a,b , c , d , e 狀態,然後再根據條件:所有人的連續工作日不能多於3天(注意:週日連到下周一也是連續)以及工作5天,休息兩天,即可得e的工作表情況:1110110。
然後,需要對除e以為表中的每個單元進行窮舉,以人為第一單位,以日期為第二單位(窮舉時往往會由於,for迴圈語句過多而混亂,這樣便於表達思路)。
最後,就是對題目中的條件的表達,從**中可以看到,並不是把每個條件的所有實現都寫在了一起,而是複雜的又進行了割裂,這樣雖然多寫了幾行**,但是乙個乙個模組的實現、組合,讓思路更加的清晰,保證了程式的可讀性,以及後續**的穩定編寫!
藍橋杯 排日期
某保密單位機要人員 a,b,c,d,e 每週需要工作5天,休息2天。上級要求每個人每週的工作日和休息日安排必須是固定的,不能在週間變更。此外,由於工作需要,還有如下要求 1.所有人的連續工作日不能多於3天 注意 週日連到下周一也是連續 2.一周中,至少有3天所有人都是上班的。3.任何一天,必須保證 ...
暴力窮舉 poj Blue Jeans
直接用暴力法窮舉所有情況 include include include using namespace std string str 11 int main int t cin t while t int n cin n for int j 0 j str j string result for ...
常見演算法 窮舉
遇到乙個問題,找不到更好的解決辦法 找不到數學公式或者規律 時,使用 最笨 的辦法,利用計算機計算速度塊的特點,將所有的可能性全部列出來,並將我們想要得到的結果記錄下來。例如 百錢買百雞 我國古代數學家張丘建在 算經 一書中提出的數學問題 雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁...