ZOJ1008 Gnome Tetravex
가지를 잘라야 한다. 비교적 간단하다. 같은 네모난 덩어리를 집합시켜야 한다. 만약에 네모난 덩어리가 특정한 위치에 놓을 수 없다면 그것과 같은 네모난 덩어리도 이 위치에 놓을 수 없다.
/*******************************************************************************
# Author : Neo Fung
# Email : [email protected]
# Last modified: 2012-04-17 19:26
# Filename: ZOJ1008 Gnome Tetravex.cpp
# Description :
******************************************************************************/
#ifdef _MSC_VER
#define DEBUG
#define _CRT_SECURE_NO_DEPRECATE
#endif
#include <fstream>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <string>
#include <limits.h>
#include <algorithm>
#include <math.h>
#include <numeric>
#include <functional>
#include <ctype.h>
#define MAX 100
using namespace std;
struct NODE
{
int top,right,buttom,left;
bool operator== (const NODE &tmp)
{
return top==tmp.top && right==tmp.right && buttom==tmp.buttom && left==tmp.left;
}
}node[MAX];
int map[MAX][MAX],visit[MAX];
int sum[MAX];
bool ans;
void dfs(int p,const int &n)
{
if(p==n*n || ans )
{
ans=true;
return;
}
int x=p/n,y=p%n;
for(int i=0;i<n*n && !ans;++i)
if(sum[i])
{
if(x>0)
if(node[i].top!=node[map[x-1][y]].buttom)
continue;
if(y>0)
if(node[i].left!=node[map[x][y-1]].right)
continue;
map[x][y]=i;
--sum[i];
dfs(p+1,n);
++sum[i];
}
}
int main(void)
{
#ifdef DEBUG
freopen("../stdin.txt","r",stdin);
freopen("../stdout.txt","w",stdout);
#endif
int n,ncases=1;;
// scanf("%d",&ncase);
while(scanf("%d",&n) && n)
{
if(ncases>1)
printf("
");
memset(sum,0,sizeof(sum));
for(int i=0;i<n*n;++i)
{
scanf("%d%d%d%d",&node[i].top,&node[i].left,&node[i].buttom,&node[i].right);
bool flag=false;
for(int j=0;j<i;++j)
if(sum[j] && node[j]==node[i])
{
++sum[j];
flag=true;
break;
}
if(!flag)
++sum[i];
}
memset(map,0,sizeof(map));
ans=false;
dfs(0,n);
printf("Game %d: ",ncases++);
if(ans)
printf("Possible
");
else
printf("Impossible
");
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.