[ACM] [이 진 트 리] 문제 옮 겨 다 니 기.

12599 단어 데이터 구조
선분 절단
주: 지속 업데이트
이미 알 고 있 는 선서 중 서 구 후 서
로 곡 1827 미국 혈통
코드:
#include
using namespace std;
void dfs(string xx,string zx){
	if(!xx.size()) return;
	int pos=zx.find(xx[0]);
	dfs(xx.substr(1,pos),zx.substr(0,pos));
	dfs(xx.substr(pos+1),zx.substr(pos+1));
	printf("%c",xx[0]);
}
int main(){
	string xx,zx;
	cin>>zx>>xx;
	dfs(xx,zx);
	printf("
"
); }

이미 알 고 있 는 후 순위 에서 앞 순 서 를 구하 다.
낙 곡 1030 우선 순위 배열
코드:
#include
using namespace std;
void dfs(string zx,string hx){
	if(!zx.size())return;
	int pos=zx.find(hx[hx.size()-1]);
	printf("%c",zx[pos]);
	dfs(zx.substr(0,pos),hx.substr(0,pos));
	dfs(zx.substr(pos+1),hx.substr(pos,hx.size()-pos-1));
} 
int main(){
	string zx,hx;
	cin>>zx>>hx;
	dfs(zx,hx);
	printf("
"
); }

이미 알 고 있 습 니 다.
질문
코드:
사고: 아들 이 하나 밖 에 없 으 면 중간 순위 의 차이 가 생 길 수 있 음 이 분명 하 다.한 아들 만 있 는 노드 수 를 찾 으 려 면 몇 쌍 의 자모 가 앞 순서 와 뒤 순서 에서 딱 붙 어 서로 바 꾸 면 된다.예 를 들 어 앞의 순서 에서 ab 이 고 뒤의 순서 에서 ba 이다. 분명히 a 는 아들 b 만 있다.
#include
using namespace std;
int main(){
	char a[400],b[400];
	scanf("%s%s",a,b);
	long long n=0;
	for(int i=0;i<strlen(a)-1;i++)
		for(int j=1;j<strlen(b);j++)
			if(b[j]==a[i]&&a[i+1]==b[j-1]){
				n++;continue;
			}
	printf("%lld
"
,1<<n); }

좋은 웹페이지 즐겨찾기