洛谷-P1305-题解

P1305

//看了大佬的方法.
//学了两个新的函数,erase(),insert().
//erase(m,n);m:需要删除的下标,n:删除的个数
//insert(m,str);m:插入的下标,str:插入的字符(串)
#include
#include
using namespace std;

int main()
{
	int x;
	cin >> x;
	string str;
	cin >> str;
	for(int i = 1; i < x; i++){
		string ss;
		cin >> ss;
		int x = str.find(ss[0]);
		str.erase(x,1);//删除一个 
//		cout<< i <<" " << str  << '\n';
		str.insert(x,ss);//插入ss 
//		cout<< i <<" " << str  << '\n';
	}
	for(int i = 0; i < str.size(); ++i){
		if(str[i] != '*') cout << str[i];
		else continue;
	}
	return 0;
}
//运用了递归的方法。
//先从根节点开始,往下走,需要的是先序排序
//那么打印完本身,再走左根,再右根。
//遇到‘*’返回。
//结果:AC走人
#include
#include
using namespace std;
char ch[26][3];
int n;
void dy(char x){
	if(x == '*') return;
	cout << x;
	int i;
	for(i = 0; i < n; i++){
		if(x==ch[i][0])break;
	}
	dy(ch[i][1]);
	dy(ch[i][2]);
}
int main()
{
	cin >> n;
	
	for(int i = 0; i < n; i++){
		cin >> ch[i][0] >> ch[i][1]>>ch[i][2];
	}
	dy(ch[0][0]);
	return 0;
}

嘻嘻,树学完快一年了,然后忘记了一些,还好这次复习了一些。干!

你可能感兴趣的:(练习)