題意:按照題目中給定的方法,給你一個矩陣,求出變換出該矩陣的字符串 思路:構造問題,在紙上多畫幾組就能發現,每次必須從上往下找到一條路徑,最後輸出這些路徑,按照開頭最大的最晚輸出,找的過程中只要不斷往下一層找一個大的即可,並且如果一開使有一行是非遞增就是錯誤 代碼:
#include #include #include #include using namespace std; const int N = 100005; int t, n, m, ans[N], an, flag, num[N]; vector g[N]; void find(int i, int j) { if (i + 1 != m && g[i + 1][num[i + 1] - 1] > g[i][j]) { if (num[i + 1] - 1 < 0) return; ans[an++] = g[i + 1][num[i + 1] - 1]; find(i + 1, num[i + 1] - 1); num[i + 1]--; } } bool solve() { if (flag) return false; an = 0; int len = g[0].size(); for (int j = len - 1; j >= 0; j--) { ans[an++] = g[0][j]; find(0, j); } return an == n; } int main() { int cas = 0; scanf("%d", &t); while (t--) { scanf("%d%d", &n, &m); flag = 0; for (int i = 0; i < m; i++) { g[i].clear(); scanf("%d", &num[i]); int tmp; for (int j = 0; j < num[i]; j++) { scanf("%d", &tmp); if (j && tmp < g[i][j - 1]) flag = 1; g[i].push_back(tmp); } } printf("Case #%d:", ++ cas); if (!solve()) printf(" No solution\n"); else { for (int i = n - 1; i >= 0; i--) printf(" %d", ans[i]); printf("\n"); } } return 0; }
Garbage Heap Time limit: ?
1、問題描速:  
[C++設計模式] adapter 適配器模式 STL中
C#程序員經常用到的10個實用代碼片段(1) 1 讀取操作
VS中C++對象的內存布局,vs布局 本文主要簡述一下在V
單一模式的幾個注意點: 一) 設計單一模式,首先需要把