奇怪的问题增加了
查看原帖
奇怪的问题增加了
223989
龙潜月十五楼主2021/5/5 21:20

这题需要将一个原始字符串 ss 通过给定操作变成新的字符串,有两种方法,我感觉是一样的,但结果却不同。

第一种是用 stst 记录原始的字符串 ss,然后在 ss 上进行修改,代码如下:

void A(string s) {
	string st = s;
	for(int i = 0; i <= 3; i++)
		s[i] = st[i + 4];
	for(int i = 4; i <= 7; i++)
		s[i] = st[i - 4];
	cout << s; 
	if(!mp.count(s))
		mp[s] = mp[st] + 'A', q.push(s);
}

第二种是用 ansans 直接记录改过后的 ss。代码如下:

void A(string s) {
	string ans;
	for(int i = 0; i <= 3; i++)
		ans[i] = s[i + 4];
	for(int i = 4; i <= 7; i++)
		ans[i] = s[i - 4];
	cout << ans;
	if(!mp.count(ans))
		mp[ans] = mp[s] + 'A', q.push(ans);
}

两种看似一样,但第二种是错的,而且连输出都不行。

实在是想不通,来询问一下,希望有人解答,谢谢了!

2021/5/5 21:20
加载中...