zoj 1008 Gnome Tetravex

zoj 1008 Gnome Tetravex,第1张

zoj 1008 Gnome Tetravex
#include<stdio.h> int n;int element[25][4];int state[25];int result[25]; int q; void initial(){    int i,j;    for(i=0;i<25;i++)    {        for(j=0;j<4;j++)        { element[i][j]=0;        }        state[i]=0;         result[i]=0;    }     q=0;} int backtrack(int ipos){     int i;     if(ipos==n*n)     {         return 1;     }     else     {         for(i=0;i<q;i++)         { if(state[i]==0) {    continue;  }  else {    if(ipos>=n)    {          if(element[result[ipos-n]][2]!=element[i][0])          {      continue;          }    }     if(ipos%n!=0)    {if(element[result[ipos-1]][1]!=element[i][3]){       continue;}    }    state[i]--;     result[ipos]=i;    if(backtrack(ipos+1)==1)         return 1;    state[i]++; }}      }     return 0;}int main(){    int i,j,index;    index=0;    int top,right,bottom,left;    scanf("%d",&n);    while(n)    {          initial();          index++;          for(i=0;i<n*n;i++)          {  scanf("%d %d %d %d",&top,&right,&bottom,&left);  for(j=0;j<q;j++)  {       if(element[j][0]==top&&element[j][1]==right&&element[j][2]==bottom&&element[j][3]==left)       {     state[j]++;       break;       }  }  if(j==q)  {       element[q][0]=top;       element[q][1]=right;       element[q][2]=bottom;       element[q][3]=left;       state[q]=1;       q++;   }          }          if(index>1)          {  printf("n");}printf("Game %d: ",index);          if(backtrack(0))          {  printf("Possiblen");}          else          {  printf("Impossiblen");}          scanf("%d",&n);    }    return 0; }

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4926943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存