HYSBZ - 1215 24 시 게임 (DFS + 해시 판정 중)

2073 단어 ACM데이터 구조
아이들 의 컴 퓨 팅 능력 을 키 우기 위해 어른 들 은 아이들 에 게 이런 게임 을 자주 해 준다. 1 개의 카드 에서 4 장의 카드 를 임의로 뽑 아 아이 에 게 '+', '-', '×”、"÷" 와 괄호 는 합 법 적 인 표현 식 을 구성 하고 표현 식 의 값 을 24 시 로 합 니 다. 이 게임 은 이른바 "24 시 게임" 입 니 다. 주어진 4 개의 정수 a, b, c, d 에 대해 프로 그래 밍 을 해 보 세 요. 이 4 개의 정수 가 24 의 서로 다른 표현 식 을 구성 할 수 있 는 지 프로 그래 밍 을 해 보 세 요.
Input
총 한 줄 을 입력 하 십시오. 4 개의 정수 a, b, c, d (0 < = a, b, c, d < = 100) 입 니 다.
Output
출력 은 a, b, c, d 로 구 성 된 값 은 24 표현 식 개수 입 니 다. 없 으 면 출력 0 입 니 다.
Sample Input
5 5 5 5
Sample Output
1
Hint
문제 풀이 방향:
 
거 집합 검색
 
먼저 숫자 를 매 거 하 는 순서
모든 연산 기 호 를 다시 매 거 하 다.
그 다음 에 매 거 연산 은 선후 로 괄호 를 어떻게 넣 습 니까?
하지만 방안 수 는 이렇게 즐겁게 얻 을 수 없다.
그래서 하 쉬 는 마지막 에 무 거 운 판결 을 내 렸 다.
폭력 으로 폭력 을 단련 하 라!!!
 
AC 코드:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const double eps=1e-9;
 
int a[5],r[5],v[5],tot,hash[8000];
bool book[5];

void insert(int x1,int x2,int x3,int x4,int x5,int x6,int x7)
{
	hash[++tot]=x1|x2<<3|x3<<6|x4<<9|x5<<12|x6<<15|x7<<18;//<1;
	if(x==2) return y<2;
	return 1;
} 
 
void check()
{
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<4;j++)
		{
			for(int k=0;k<4;k++)
			{
				bool c1=can(k,j),c2=can(j,i);
				
				if(abs(opt(opt(opt(a[v[1]],a[v[2]],i),a[v[3]],j),a[v[4]],k)-24)4)
	{
		check();
		return;
	}
	for(int i=0;i<4;i++)
	{
		if(book[i]==0)
		{
			book[i]=1;
			v[step]=i;
			dfs(step+1);
			book[i]=0;
		}
	}
}
 
int main()
{
	for(int i=0;i<4;i++)
	{
		scanf("%d",&a[i]);
	}
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<4;j++)
		{
			r[i]+=a[i]

좋은 웹페이지 즐겨찾기