字符串的题,帮忙看一下为什么不对?
题目描述设有n个正整数(n≤20) ,将它们联接成一排,组成一个最大的多位整数。
例如:
n=3 时,3 个整数13,312 ,343 联接成的最大整数为:34331213
又如:n=4 时,4 个整数7 ,13 ,4,246 联接成的最大整数为:7424613
输入输出格式
输入格式:
第一行,一个正整数 n 。
第二行,n 个正整数。
输出格式:
一个正整数,表示最大的整数。
我想用dfs做,程序运行出来不对,求帮忙看一下怎么回事?
代码:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
struct str{
char s[100];
}a[25];
int n,visited[25];
char m[1000]={'\0'},temp0[1000]={'\0'};
void dfs(int step,char *ss){
int i;
char temp[1000];
strcpy(temp,ss);
if(step==21){
if(strcmp(ss,m)>0) strcpy(m,ss);
return;
}
for(i=1;i<=n;i++){
if(visited[i]==0){
strcat(ss,a[i].s);
visited[i]=1;
dfs(step+1,ss);
strcpy(ss,temp);
visited[i]=0;
}
}
}
int main(void){
int i,j;
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%s",a[i].s);
memset(visited,0,sizeof(visited));
dfs(1,temp0);
printf("%s\n",m);
return 0;
}