98年的NOIp提高就这么难了吗??Fuck me?
这个玩意回溯很费劲啊……
不过就是个单纯的全排列问题(据说某神犇小学就会打全排列代码……)
调了好久,发现是memset惹的鬼,往递归里加了个变量就OK了
代码·(对于我这种蒟蒻来说一遍AC是多么的困难……)
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
char numbers[200],cur[200],mid[20];
int len,times=0;
long long nump[21]={-1};
unsigned long long number=0,ans=0;
bool status[200]={false};
void go(int pos)
{
if(pos<times) for (int i=0;i<times;i++)
{
if (status[i]==true)
{
sprintf(mid,"%lld",nump[i]);
strcat(cur,mid);
int lenk=strlen(mid);
status[i]=false;
if (pos!=times)
{
go(pos+1);
status[i]=true;
for (int k=strlen(cur)-lenk;k<=strlen(cur);k++) cur[k]=0;
memset(mid,0,sizeof(mid));
}
}
}
if (pos=times-1)
{
sscanf(cur,"%lld",&number);
if (number>ans) ans=number;
}
return;
}
int main()
{
memset(mid,0,sizeof(mid));
memset(cur,0,sizeof(cur));
memset(numbers,0,sizeof(numbers));
scanf("%d",×);
for (int i=0;i<times;i++) scanf("%lld",&nump[i]);
for (int i=0;i<times;i++) status[i]=true;
go(0);
printf("%lld",ans);
return 0;
}