兄弟们,没有过为什么我的竟然是100分
查看原帖
兄弟们,没有过为什么我的竟然是100分
787214
Gjanuary楼主2023/8/16 18:00
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
long long n;
string data[1000];
long long visited[1000];// 下标表示有么有被放过 
string maxNumber="0";// 放最大值 
string tmpStr="";
void dfs(long long gezi){ 
	// 如果格子的数量大于n则表示已经放完 
	if(gezi>n){
		//cout<<tmpStr<<endl;// 输出结果
		if(tmpStr > maxNumber){
			maxNumber = tmpStr;
		}
		return; 
	}
	// 第一个格子有n种放法
	for(long long i=0;i<n;i++){
		// 判断该数是否被使用过
		if(visited[i] == 0){// 没被用过 ,则可以放数 
			string newTmpStr = tmpStr;
			tmpStr += data[i];// 拼接处理
			visited[i] = 1;// 设置被用过
			// 放下一个格子
			dfs(gezi+1); 
			tmpStr = newTmpStr;
			visited[i] = 0;
		} 
		
	} 
}
int main()
{
	cin >> n;
	for(long long i=0;i<n;i++){
		cin >> data[i];
	}
	dfs(1); //  1表示第一个格子 ;
	cout<<maxNumber;
    return 0;
}



```![效果](https://i.niupic.com/images/2023/08/16/bAXW.png)
2023/8/16 18:00
加载中...