uva 1262 排列

来源:互联网 发布:淘宝网韩版女童装 编辑:程序博客网 时间:2024/04/28 19:21
#include <bits/stdc++.h>using namespace std;#define REP(i,n) for(int i=0;i<(n);i++)int T, n; string in[2][6];int main(int argc, char const *argv[]){cin >> T;while (T-- && cin >> n){string ans, inp[5];int Total = 1; n--;REP(k, 2) REP(i, 6) cin >> in[k][i];REP(j, 5) REP(i, 6) REP(k, 6) if (in[1][k][j] == in[0][i][j]) inp[j] += in[0][i][j];REP(i, 5) sort(inp[i].begin(), inp[i].end()), inp[i].erase(unique(inp[i].begin(), inp[i].end()), inp[i].end()), Total *= inp[i].size();REP(i, 5){if (!Total || !inp[i].size() || n >= Total) break;Total /= inp[i].size();ans += inp[i][n / Total];n %= Total;}cout << (ans.size() == 5 ? ans : "NO") << endl;}return 0;}


就照紫书上的排列的思想来写,代码短,思路清晰,速度还比dfs快

0 0
原创粉丝点击