思路参考: http://blog.csdn.net/rappy/article/details/1797699
代码如下:
#include <iostream>
#include <cstring>
using namespace std;
const int N = 100;
long long cnt [N] [N];
int seq [N];
int n;
void findall()
{
for (int i = 0;i < n;i ++)
cin >> seq[i];
for (int i = 0;i < n - 1;i ++)
seq[i] = seq[i] > seq[i + 1] ? 0 : 1;
memset(cnt,0,sizeof(cnt));
cnt[0][0] = 1;
for (int i = 1;i < n;i ++)
{
if (seq[i - 1])
{
for (int j = 0;j < i;j ++)
{
for (int k = j + 1;k <= i;k ++)
cnt[i][k] += cnt[i - 1][j];
}
}
else
{
for (int j = 0;j < i;j ++)
{
for (int k = 0;k <= j;k ++)
cnt[i][k] += cnt[i - 1][j];
}
}
}
long long sum = 0;
for (int i = 0;i <= n - 1;i ++)
sum += cnt[n - 1][i];
cout << sum << endl;
}
int main()
{
while(cin >> n)
{
findall();
}
}