ファーウェイ動的計画問題
1863 ワード
作者:阿超は私の出所です:CSDN原文:https://blog.csdn.net/huangpin815/article/details/77132297本文は博主のオリジナルの文章で、転載して博文のリンクを添付してください!
#include
#include
using namespace std;
// : q : , , ( )
int dp(int before,int des,int res,int ex)
{
if(before==0)
{// ==0
if(des==res)
{
return 1;
}
else
return 0;
}
return dp(before-1,before,res-des,1)+dp(before-1,before,res+des,1)+dp(before-1,before*pow(10,ex)+des,res,ex+1);
}
int main()
{
int n;
cin>>n;
int count=dp(8,9,n,1);
cout<
入力説明:入力は2つの部分を含む:第1行M,Nは次にM行,N個の平安果数を含む
出力説明:整数で最も多く取られた平安果の数
例:
入力2 4 1 2 3 40 6 7 8 90
出力136//考え方:ダイナミックプランニングダイナミック方程式:現在位置で得られる最大リンゴ数=max(上から最大リンゴ+左から最大リンゴを得ることができる)dp(0,0)=app[0][0]*/
#include
using namespace std;
int Map[50][50];
int maxnum=0;
void dp(int r,int c,int cost)
{
if(r==0&&c==0)
{
maxnum=cost+Map[0][0];
return;
}
if(r-1>=0&&c-1>=0)
{
if(Map[r][c-1]>Map[r-1][c])
dp(r,c-1,cost+Map[r][c]);
else
dp(r-1,c,cost+Map[r][c]);
}
if(r==0&&c>0)
{
dp(r,c-1,cost+Map[r][c]);
}
if(c==0&&r>0)
{
dp(r-1,c,cost+Map[r][c]);
}
}
int main()
{
int m,n;
cin>>m>>n;
for(int i=0;i>Map[i][j];
}
}
dp(m-1,n-1,0);
cout<