題意:
給定兩表(6行5列),只有同列中同時存在的的字母才可作為密碼,現在要求求解按字典序排序第n個密碼。
解題思路:
先找出可作為密碼的字母,其個數分別為a,b,c,d,e,並計算總的種類數。
第乙個字母若為a,則n應小於b*c*d*e;
若為b,則n應大於b*c*d*e小於2*b*c*d*e;
由此可以推出餘下的四個字母。
坑點:我做題的時候完完全全沒注意到重複性,若同列中有兩個c,那麼可選密碼的個數不應為2,而是1.
所以應該去重,我一開始用vector再排序就完全沒注意到這個問題。所以使用set就能解決問題。
**:
#include #include #include #include #define siz(x) (int)x.size()
using namespace std;
int t, k;
char s1[7][7];
char s2[7][7];
setg[7];
set::iterator it;
inline bool check(int ch,int col)
return 0;
}int sum[7];
int main()
}int cur = 0;
sum[5] = 1;
for (int i = 4; i >= 0; --i)
if (k > sum[0])
for (int i = 0; i < 5; ++i)
else break;
}putchar(*it);
}putchar('\n');
}return 0;
}
1 UVA624(記錄路徑問題)
1 uva624 記錄路徑問題 總得來說,不管是01揹包還是完全揹包,其動態轉移每次只有兩種狀態在轉移,就說這道題目,dp i j max dp i 1 j dp i 1 j v i val i 對於dp i j 來說,它只能使由兩個狀態中的乙個轉移過來的,要麼取一件,要麼不取,那麼我們再開乙個二維...
ACM選修課1 數學問題
memset 函式 memset 陣列名,1 0 1,sizeof a 重置為1是陣列為任意正數 求乙個數的位數 int log10 n 1,公式log10 i i 必須為double型別 the hardest problem ever include using namespace std in...
數學問題 1000瓶酒找1毒酒
題目 某酒主人要宴請客人,他共有1000瓶酒,其中1瓶有毒。一旦喝了毒酒後,會在一周後發作,現在如果我們用試紙進行檢測,滴了毒酒 的試紙會在1週後變色,問最少需要多少張試紙可以檢測出哪瓶有毒?解答 10張試紙即可。10張試紙按從左到右的順序一字排好,每瓶酒也編上號1到1000,並把編號轉換成10位二...