社区讨论

超时求条,玄关

学术版参与者 4已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mhjofmw0
此快照首次捕获于
2025/11/04 05:53
4 个月前
此快照最后确认于
2025/11/04 05:53
4 个月前
查看原帖
说明 桐桐经常找一些很有趣的数学书来阅读以增长自己的数学知识。
一天,他偶然发现一个递归函数w(a,b,c)有以下性质:
如果a<=0 or b<=0 or c<=0就返回值1;
如果a>20 or b>20 or c>20就返回w(20,20,20);
如果其它别的情况就返回w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1)。
桐桐想通过编程求出这个简单的递归函数的值,可是他在编程的时候遇到了一些困难。你能帮助他吗?
输入格式 a,b,c三个整数, -50≤a,b,c≤50。
输出格式 a,b,c三个整数所对应的w(a,b,c)函数的值。要求以w(a, b, c)=函数的值来输出。
样例
输入 1 1 1
输出 2
CPP
#include<bits/stdc++.h>
using namespace std;
int a,b,c;
int w(int A,int B,int C){
    if(A<=0 || B<=0 || C<=0)return 1;
    else if(A>20 || B>20 || C>20)return w(20,20,20);
    else return w(A-1,B,C)+w(A-1,B-1,C)+w(A-1,B,C-1)-w(A-1,B-1,C-1);
}
int main(){
    scanf("%d%d%d",&a,&b,&c);
    printf("%d",w(a,b,c));
}

超时求调

回复

3 条回复,欢迎继续交流。

正在加载回复...