Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
0ms, 1A, 贴一易懂源码#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int N,M; char Matrix[7][7]; int I[2000],J[2000], K[2000], R[2000]; char S[2000]; int adv; bool used[7][7]; int loc[7][7]; char own[7][7]; bool dfs(int tar, int ite){ if (tar == M){ for (int i = 0; i < adv; ++i) { if (S[i] == 'R'){ if (loc[I[i]][J[i]] != loc[K[i]][R[i]]){ return false; } } else { if (loc[I[i]][J[i]] == loc[K[i]][R[i]]){ return false; } } } return true; } if (ite == N){ return dfs(tar + 1, 0); } for (int j = 0; j < M; ++j) { if (!used[ite][j]){ used[ite][j] = true; loc[ite][j] = tar; if (dfs(tar, ite + 1)){ own[tar][ite] = Matrix[ite][j]; return true; } loc[ite][j] = -1; used[ite][j] = false; } } return false; } int main(){ int Num; scanf("%d", &Num); for (int num = 0; num < Num; ++num) { scanf("%d %d", &N, &M); for (int i = 0; i < N; ++i) { getchar(); for (int j = 0; j < M; ++j) { scanf("%c", &Matrix[i][j]); } } adv = 0; while (scanf("%d %d %c %d %d", I + adv, J + adv, S + adv, K + adv, R + adv)){ if (I[adv] == 0 && J[adv] == 0 && K[adv] == 0 && R[adv] == 0){ break; } I[adv]--; J[adv] --; K[adv] --; R[adv] --; adv ++; } memset(loc, -1, sizeof(loc)); memset(used, 0, sizeof(used)); memset(own, 0, sizeof(own)); dfs(0,0); for (int i = 0; i < M; ++i) { for (int j = 0; j < N; ++j) { printf("%c", own[i][j]); } printf("\n"); } printf("\n"); } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator