第五个WA终于过了
查看原帖
第五个WA终于过了
245626
lingdaiqishi楼主2021/3/26 11:09

第五个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;
}
2021/3/26 11:09
加载中...