练习使用DPS的题,不知道有无别的做法,思路不复杂。形式是统计并且进行数字配对。
#include <stdio.h> ][],note[],ans[]; void ini(){ int i,j,top,right,bottom,left; ;i<;i++){ ;j<;j++) sub[i][j]=; note[i]=; ans[i]=; } m=; f=n*n; ;i<f;i++){ scanf("%d %d %d %d",&top,&right,&bottom,&left); ;j<m;j++){ ]==top&&sub[j][]==right&&sub[j][]==bottom&&sub[j][]==left){ note[j]++; break; } } if(j==m){ sub[m][]=top; sub[m][]=right; sub[m][]=bottom; sub[m][]=left; note[m]=; m++; } } } int DPS(int pos){ if(pos==f) ; else{ int i; ;i<m;i++){ if(note[i]){ if(pos>=n) ]!=sub[i][]) continue; ) ]][]!=sub[i][]) continue; note[i]--; ans[pos]=i; )) ; note[i]++; } } } ; } int main(){ ; ){ scanf("%d",&n); if(!n) break; ini(); ) printf("\n"); printf("Game %d: ",index++); )) printf("Possible\n"); else printf("Impossible\n"); } ; }