第五个WA,思来想去不知道错在哪,狠心花了下载次数查看测试点,没想到是储存输入的数组长度不够,吐了
#include <iostream>
using namespace std;
const int MAX=20;
const int NUM=3;
const int LENGTH=1e3;//原来我只设置了20= =|||
long long answer[MAX+1][MAX+1][MAX+1]={0};
long long num[LENGTH][NUM];//max行num个输入
int num_hangshu=0;
long long dfs(long long a,long long b,long long c)
{
if(a<=0||b<=0||c<=0)
{
return 1;
}
if(a>20||b>20||c>20)
{
return dfs(20,20,20);
}
if(answer[a][b][c]!=0)
{
return answer[a][b][c];
}
if(a<b&&b<c)
{
answer[a][b][c]= dfs(a,b,c-1)+ dfs(a,b-1,c-1)- dfs(a,b-1,c);
return answer[a][b][c];
}
answer[a][b][c]=dfs(a-1,b,c)+dfs(a-1,b-1,c)+dfs(a-1,b,c-1)-dfs(a-1,b-1,c-1);
return answer[a][b][c];
}
int main()
{
bool stop=0;
while(true)
{
if(stop==1)
{
break;
}
cin>>num[num_hangshu][0]>>num[num_hangshu][1]>>num[num_hangshu][2];
num_hangshu++;
if(num[num_hangshu-1][0]==-1&& num[num_hangshu-1][1]==-1 && num[num_hangshu-1][2]==-1)
{
stop=1;
}
}
//输入-1-1-1时不输出
//num_hangshu=3,s[num_hangshu-1] 第s_num行 为-1-1-1,
if(num_hangshu==1)
{
return 0;
}
int i;
for(i=0;i<num_hangshu-2;i++)
{
cout<<"w("<<num[i][0]<<", "<<num[i][1]<<", "<<num[i][2]<<") = ";
cout<<dfs(num[i][0],num[i][1],num[i][2])<<endl;
}
cout<<"w("<<num[i][0]<<", "<<num[i][1]<<", "<<num[i][2]<<") = ";
cout<<dfs(num[i][0],num[i][1],num[i][2]);
return 0;
}