日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Function(洛谷-P1464)

發布時間:2025/3/17 编程问答 8 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Function(洛谷-P1464) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

對于一個遞歸函數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)

這是個簡單的遞歸函數,但實現起來可能會有些問題。當a,b,c均為15時,調用的次數將非常的多。你要想個辦法才行.

輸入輸出格式

輸入格式:

會有若干行,并以-1,-1,-1結束,保證輸入的數在-9223372036854775808~9223372036854775807之間,并且是整數

輸出格式:

輸出若干行

格式:[b]w(a,_b,_c)_=_你的輸出(_代表空格)[/b]

輸入輸出樣例

輸入樣例#1:?

1 1 1 2 2 2 -1 -1 -1

輸出樣例#1:?

w(1, 1, 1) = 2 w(2, 2, 2) = 4

源代碼??

#include<iostream> using namespace std; long int w(long int a,long int b,long int c); long int result[30][30][30]={0};int main() {long int num[100][3];long int a,b,c;int i;for(i=0;;i++){cin>>num[i][0]>>num[i][1]>>num[i][2];//輸入函數if( num[i][0]==-1 && num[i][1]==-1 && num[i][2]==-1 )break;}for(i=0;;i++){a=num[i][0]; b=num[i][1]; c=num[i][2];if(a>20) a=21;//大于20時,返回20if(b>20) b=21;//大于20時,返回20if(c>20) c=21;//大于20時,返回20if( a==-1 && b==-1 && c==-1 )//均為-1時break;//終止循環else//按要求輸出cout<<"w("<<num[i][0]<<", "<<num[i][1]<<", "<<num[i][2]<<") = "<<w(a,b,c)<<endl;}return 0; }long int w(long int a,long int b,long int c) {if( a<=0 || b<=0 || c<=0 )//小于0時return 1;//返回1else if(result[a][b][c]!=0)//不等于0時return result[a][b][c];//返回當前值else if( a>20 || b>20 || c>20 )//任意一參數大于20時return w(20,20,20);//返回20else if( a<b && b<c )//a<b并且b<c時{result[a][b][c]=w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);return result[a][b][c];}else//其他情況{result[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 result[a][b][c];} }

總結

以上是生活随笔為你收集整理的Function(洛谷-P1464)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。