poj 1145 재 귀

1438 단어 poj
#include<iostream>

#include<cstdio>

#include<cstring>

using namespace std;

bool flag=false;

int kk;

char GetNext()  //         

{

	char c;

	while(scanf("%c",&c) && (c==' ' || c=='
' || c==9 || c==10)); return c; } int dfs(int sum,int hight) { int sign=1,k=0,k1,k2; char c; c=GetNext(); if(c==')') { return hight; } if(c=='-')// { sign=-sign; c=GetNext(); } while((c>='0' && c<='9'))// { k=k*10+(c-'0')*sign; scanf("%c",&c); } if(c=='
' || c==' ') c=GetNext(); if(c=='(') k1=dfs(sum+k,hight+1); // c=GetNext(); if(c=='(') k2=dfs(sum+k,hight+1);// c=GetNext(); if(k2==hight+1 && k1==hight+1)// { if(sum+k==kk) flag=true; } return 0; } int main() { while(scanf("%d",&kk)!=EOF) { flag=false; GetNext(); dfs(0,0); //GetNext(); if(flag) printf("yes
"); else printf("no
"); } return 0; }

 
이 문 제 는 바로 나무의 옮 겨 다 니 는 것 이다. 특수 한 형식 때문에 실현 에 있어 약간 번 거 로 우 므 로 주로 두 가지 상황 에 주의해 야 한다.
(1)       수 치 는 마이너스 일 수 있다
(2)       잎 노드 의 판단 에 따 르 면 '잎' (왼쪽, 오른쪽) 노드 의 높이 가 '부 노드' 의 높이 와 같 으 면 '부 노드' 가 진정한 잎 노드 이다.

좋은 웹페이지 즐겨찾기