这题估计是D了一天的BUG,头有点晕了,第一发看到过的人挺多的,以为有规律,自以为是的按照规律交了一发,结果WA掉,其实就是模拟冒泡排序递归而已:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<string>
#include<algorithm>
#include<map>
#include<set>
#include<vector>
#include<stack>
#include<queue>
#include<climits>
#define LL long long
using namespace std;
int n;
int a[10];
int sum;
int ans;
bool is_order()
{
for(int i=0;i<n-1;i++)
if(a[i]>a[i+1])
return 0;
return 1;
}
void dfs()
{
if(is_order()) ans++;
for(int i=0;i<n-1;i++)
{
if(a[i]>a[i+1])
{
swap(a[i],a[i+1]);
dfs();
swap(a[i],a[i+1]);
}
}
}
int main()
{
int cas=0;
while(cin>>n&&n)
{
for(int i=0;i<n;i++)
cin>>a[i];
ans=0;
if(!is_order())
dfs();
printf("There are %d swap maps for input data set %d.\n",ans,++cas);
}
return 0;
}