首页 > 代码库 > 修行之路~扣得为艾斯1910递归函数
修行之路~扣得为艾斯1910递归函数
1910 递归函数
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 黄金 Gold
题目描述 Description
对于一个递归函数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)。
如果a < b并且b < c 就返回w(a, b, c ? 1) + w(a, b ? 1, c ? 1) ? w(a, b ? 1, 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)
这是个简单的递归函数,但实现起来可能会有些问题。
输入描述 Input Description
会有若干行.每行三个数,表示a, b, c。并以?1, ?1, ?1结束
输出描述 Output Description
输出若干行,注意各种中的空格。
样例输入 Sample Input
1 1 1
2 2 2
-1 -1 -1
样例输出 Sample Output
w(1, 1, 1) = 2
w(2, 2, 2) = 4
数据范围及提示 Data Size & Hint
a, b, c < 30, Task < 11
传送门 ->>
^
|
这题用了数学思维 是我手(chao)写(xi)的。
#include <iostream> #include <cstdlib> using namespace std; 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 if(a<=b||a<=c) { int i=1; for(int j=0;j<a;j++) i*=2; return i; } 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() { int a[11][3],i,j; for(i=0;i<11;i++) { cin>>a[i][0]>>a[i][1]>>a[i][2]; if(a[i][0]==-1&&a[i][1]==-1&&a[i][2]==-1) break; } for(j=0;j<i;j++) cout<<"w("<<a[j][0]<<", "<<a[j][1]<<", "<<a[j][2]<<") = "<<w(a[j][0],a[j][1],a[j][2])<<endl; return 0; }
修行之路~扣得为艾斯1910递归函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。