文章

15

粉丝

446

获赞

2

访问

115.0k

头像
按思维习惯,递归
P1185 中国矿业大学/北京大学机考题
发布于2021年2月23日 17:07
阅读数 9.6k

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void f(string s,string pre)
{
	int len=s.size();
	if(len==1)	cout<<s<<endl;
	if(len==2)
	{
		cout<<pre+s<<endl;//先输出一下原本的
		swap(s[0],s[1]);
		cout<<pre+s<<endl;//交换后再输出一次
	}
	else
	{
		for(int i=0;i<len;i++)
		{
			string si=s;//取一个做pre
			si.erase(i,1);//删除pre准备全排
			f(si,pre+s[i]);//递归,参数传递pre便于输出
		}
	}
	
	return;
}
int main()
{
    string s;
    while(cin>>s)
    {
    	f(s,"");
    	cout<<endl;
	}
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发