求助 %深搜+记忆化 0分 样例全过,奇怪的是下载样例后,输出与样例一样

P1464 Function

_weishiqi66_ @ 2022-11-29 14:01:52

求助 %深搜+记忆化 0分 样例全过,奇怪的是下载样例后,输出与样例一样

#include<bits/stdc++.h>
#define ll long long
#define N 2*int(1e5)
using namespace std;
int a,b,c,ans;
int f[25][25][25];
int  w(int a,int b,int c){
    if(a<=0||b<=0||c<=0) return 1;
    else if(f[a][b][c]!=0) return f[a][b][c];

    else if(a>20||b>20||c>20) f[a][b][c]=w(20,20,20);
    else if(a<b&&b<c) f[a][b][c]= w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);
    else f[a][b][c]=w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1);
    return f[a][b][c];
}
int main(){
    while(1){
        cin>>a>>b>>c;
        ans=0;
        if(a==-1&&b==-1&&c==-1) break;
        if(a>20) a=21;
        if(b>20) b=21;
        if(c>20) c=21;
        printf("w(%d, %d, %d) = ",a,b,c);
        printf("%d\n",w(a,b,c));

    }
    return 0;
}

by SkyWave @ 2022-11-29 14:19:00

多组数据不是这样玩的,这样会无休止的输入


by Land_ER @ 2022-11-29 14:27:07

@weishiqi66 把 while(1) 和后面的输入改成 while(scanf("%d%d%d", &a, &b, &c))


by Register_int @ 2022-11-29 15:06:18

@SkyWave @Land_ER

if(a==-1&&b==-1&&c==-1) break;

眼瞎赶快找人治一治。


by Register_int @ 2022-11-29 15:07:58

@Land_ER 有区别吗???


by Register_int @ 2022-11-29 15:09:23

@weishiqi66 你在输出 w(a,b,c)= 之前先修改了 a,b,c 的数值,所以输出错了。


by Register_int @ 2022-11-29 15:10:33

@weishiqi66

if(a>20) a=21;
if(b>20) b=21;
if(c>20) c=21;
printf("w(%d, %d, %d) = ",a,b,c);

改成

printf("w(%d, %d, %d) = ",a,b,c);
if(a>20) a=21;
if(b>20) b=21;
if(c>20) c=21;

by 听取MLE声一片 @ 2022-11-29 15:18:26

我赞同 Re 的说法


by Anahita @ 2022-11-29 15:24:16

我赞同MLE的说法(


by SkyWave @ 2022-11-29 16:32:08

@Register_int 我错了


by SkyWave @ 2022-11-29 16:34:12

cjld好凶呜呜呜


| 下一页