for (int i = 3; i <= n - m; i++)
high(i);
这里为什么不能i<=n,最后输出a[n][i]??
#include <iostream>
#include <cstdio>
using namespace std;
int n, m,a[100][100],len=1;
void high(int x)
{
for (int i = 1; i <= len; i++)
a[x][i] = a[x - 2][i] + a[x - 1][i];
for (int i = 1; i <= len; i++)
{
if (a[x][i] > 9)//如果i的下标的数大于9需要进位了
{
a[x][i + 1] += a[x][i] / 10;//进位
a[x][i] %= 10;
}
}
if (a[x][len + 1])//如果最高位有数字了,代表需要对最高位的下一位进位,所以len++
++len;
}
int main()
{
cin >> m >> n;
a[1][1] = 1, a[2][1] = 2, a[0][1] = 0;//初始化前3项
for (int i = 3; i <= n - m; i++)
high(i);
for (int i = len; i > 0; i--)
cout << a[n-m][i];
return 0;
}