工作安排
現(xiàn)在有n位工程師和6項(xiàng)工作(編號(hào)為0至5),現(xiàn)在給出每個(gè)人能夠勝任的工作序號(hào)表(用一個(gè)字符串表示,比如:045,表示某位工程師能夠勝任0號(hào),4號(hào),5號(hào)工作)。現(xiàn)在需要進(jìn)行工作安排,每位工程師只能被安排到自己能夠勝任的工作當(dāng)中去,兩位工程師不能安排到同一項(xiàng)工作當(dāng)中去。如果兩種工作安排中有一個(gè)人被安排在的工作序號(hào)不一樣就被視為不同的工作安排,現(xiàn)在需要計(jì)算出有多少種不同工作安排計(jì)劃。
輸入描述:
輸入數(shù)據(jù)有n+1行:
第一行為工程師人數(shù)n(1 ≤ n ≤ 6)
接下來(lái)的n行,每行一個(gè)字符串表示第i(1 ≤ i ≤ n)個(gè)人能夠勝任的工作(字符串不一定等長(zhǎng)的)
輸出描述:
輸出一個(gè)整數(shù),表示有多少種不同的工作安排方案
輸入例子:
6
012345
012345
012345
012345
012345
012345
輸出例子:
720
簡(jiǎn)單的搜索題
#include"iostream" #include"string.h" using namespace std; string ai[10]; int n; bool sign[200]; int num=0; void dfs(int cur) {if(cur==n){num++;}for(int i=0;i<ai[cur].size();i++){int a=ai[cur][i]-'0';if(!sign[a]){sign[a]=true;dfs(cur+1);sign[a]=false;}}}int main() {memset(sign,0,sizeof(sign));cin>>n;for(int i=0;i<n;i++)cin>>ai[i];dfs(0);cout<<num<<endl;return 0; }總結(jié)
- 上一篇: Intellij Idea运行Play
- 下一篇: 十进制转二进制C语言版