#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <cmath>
#include <stdlib.h>
using namespace std;
long process(int N,int M,int row,int col,int K)
{
if(row==N||col==M||row<0||col<0)
{
return 0;
}
if(K==0)
{
return 1;
}
long live=process(N,M,row+1,col,K-1);
live+=process(N,M,row-1,col,K-1);
live+=process(N,M,row,col+1,K-1);
live+=process(N,M,row,col-1,K-1);
return live;
}
long gcd(int n,int m)
{
return m ==0?n:gcd(m,n%m);
}
string bob1(int N,int M,int row,int col,int K)
{
long all=pow(4,K);
long live=process(N,M,row,col,K);
long num=gcd(all,live);
double s=live/num+0.0;
double n=all/num+0.0;
double m=s/n*100;
return "存活率为"+to_string(m)+"%";
}
long getvalue2(int N,int M,int row,int col,int K,long*** q);
long process2(int N,int M,int row,int col,int K,long***q);
string bob2(int N,int M,int row,int col,int K)
{
long ***q=new long**[K+1];
for(int i = 0;i < K+1;i++)
{
q[i]=new long*[N];
}
for(int i = 0;i <K+1;i++) {
for(int j = 0;j < N;j++) {
q[i][j]=new long[M];
}
}
long all=pow(4,K);
long live=process2(N,M,row,col,K,q);
long num=gcd(all,live);
double s=live/num+0.0;
double n=all/num+0.0;
double m=s/n*100;
for(int i = 0;i <K+1;i++) {
for(int j = 0;j < N;j++) {
delete[] q[i][j];
}
}
for(int i = 0;i < K+1;i++)
{
delete[] q[i];
}
delete[] q;
return "存活率为"+to_string(m)+"%";
}
long process2(int N,int M,int row,int col,int K,long***q)
{
for(int i = 0;i < K+1;i++) {
for(int j = 0;j < 10;j++) {
for(int c = 0;c < 9;c++) {
q[i][j][c]+=getvalue2(N,M,j+1,c,i-1,q);
q[i][j][c]+=getvalue2(N,M,j-1,c,i-1,q);
q[i][j][c]+=getvalue2(N,M,j,c+1,i-1,q);
q[i][j][c]+=getvalue2(N,M,j,c-1,i-1,q);
}
}
}
return q[K][row][col];
}
long getvalue2(int N,int M,int row,int col,int K,long*** q)
{
if(row>=N||col>=M||row<=0||col<=0||K<0)
{
return 0;
}
if(K==0)
{
return 1;
}
return q[K][row][col];
}
int main(int argc, char** argv){
cout<<bob2(10,9,5,6,10)<<endl;
cout<<bob1(10,9,5,6,10);
return 0;
}
![](https://profile-avatar.csdnimg.cn/default.jpg!4)
我这递归改的动态规划,为什么结果不一样
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- threenewbee 2023-03-11 00:40关注
代码太多了,请学会调式,主要是
string bob2(int N,int M,int row,int col,int K)
这里下断点,看看参数进来对不对解决 无用评论 打赏 举报
悬赏问题
- ¥20 C# NetworkStream WriteAsync方法卡住无反应
- ¥15 这个如何解决详细步骤
- ¥15 在微信h5支付申请中,别人给钱就能用我的软件,这个的所属行业是啥?
- ¥30 靶向捕获探针设计软件包
- ¥15 别人给钱就能用我的软件,这个的经营场景是啥?
- ¥15 react-diff-viewer组件,如何解决数据量过大卡顿问题
- ¥20 遥感植被物候指数空间分布图制作
- ¥15 安装了xlrd库但是import不了…
- ¥20 Github上传代码没有contribution和activity记录
- ¥20 SNETCracker