网易首页 > 网易号 > 正文 申请入驻

2023-09-27:用go语言,在一个 n x n 的国际象棋棋盘上,一个骑

0
分享至

2023-09-27:用go语言,在一个 n x n 的国际象棋棋盘上,一个骑士从单元格 (row, column) 开始,

并尝试进行 k 次移动。行和列是 从 0 开始 的,所以左上单元格是 (0,0),

右下单元格是 (n - 1, n - 1),象棋骑士有8种可能的走法,

每次移动在基本方向上是两个单元格,然后在正交方向上是一个单元格,类似马走日,

每次骑士要移动时,它都会随机从8种可能的移动中选择一种(即使棋子会离开棋盘),然后移动到那里。

骑士继续移动,直到它走了 k 步或离开了棋盘。

返回 骑士在棋盘停止移动后仍留在棋盘上的概率。

输入: n = 3, k = 2, row = 0, column = 0。

输出: 0.0625。

来自左程云。

答案2023-09-27:

这段代码实现了一个求解国际象棋棋盘上骑士留在棋盘上的概率的函数。函数接收四个参数:表示棋盘大小,表示骑士的移动次数,和表示骑士的初始位置。

knightProbability

n

k

row

column

主要的函数是,它使用动态规划的思想来求解。首先,根据当前位置和剩余移动次数,计算出骑士在当前位置的概率。如果当前位置已经计算过,则直接返回之前的结果。否则,根据题目要求,将当前位置向8个可能的方向移动,并将每个方向的概率除以8,然后递归计算骑士在下一步位置的概率,并将所有可能的结果相加得到当前位置的概率。最后,将计算的结果记录在dp数组中,以便之后的计算可以直接使用。

process2

在主函数中,给定了初始参数n=3,k=2,row=0,column=0,然后调用函数计算骑士停止移动后留在棋盘上的概率,并将结果打印出来。

knightProbability

总的时间复杂度:由于每个位置最多计算一次,而每个位置的计算需要遍历所有剩余移动次数,所以总的时间复杂度为O(n^2 * k)。

总的额外空间复杂度:dp数组的大小为nnk,所以总的额外空间复杂度为O(n^2 * k)。

go完整代码如下:

packagemain
import"fmt"
funcknightProbability(nint,kint,rowint,columnint)float64{
dp:=make([][][]float64,n)
fori:=0;idp[i]=make([][]float64,n)
forj:=0;jdp[i][j]=make([]float64,k+1)
fort:=0;t<=k;t++{
dp[i][j][t]=-1
}
}
}
returnprocess2(n,k,row,column,dp)
}
funcprocess2(n,rest,r,cint,dp[][][]float64)float64{
ifr<0||r>=n||c<0||c>=n{
return0
}
ifdp[r][c][rest]!=-1{
returndp[r][c][rest]
}
varansfloat64
ifrest==0{
ans=1
}else{
ans+=(process2(n,rest-1,r-2,c+1,dp)/8)
ans+=(process2(n,rest-1,r-1,c+2,dp)/8)
ans+=(process2(n,rest-1,r+1,c+2,dp)/8)
ans+=(process2(n,rest-1,r+2,c+1,dp)/8)
ans+=(process2(n,rest-1,r+2,c-1,dp)/8)
ans+=(process2(n,rest-1,r+1,c-2,dp)/8)
ans+=(process2(n,rest-1,r-1,c-2,dp)/8)
ans+=(process2(n,rest-1,r-2,c-1,dp)/8)
}
dp[r][c][rest]=ans
returnans
}
funcmain(){
n,k,row,column:=3,2,0,0
result:=knightProbability(n,k,row,column)
fmt.Println(result)
}

rust完整代码如下:

fnknight_probability(n:i32,k:i32,row:i32,column:i32)->f64{
letmutdp=vec![vec![vec![-1.0;(k+1)asusize];nasusize];nasusize];
returnprocess2(n,k,row,column,&mutdp);
}
fnprocess2(n:i32,rest:i32,r:i32,c:i32,dp:&mutVec>>)->f64{
ifr<0||r>=n||c<0||c>=n{
return0.0;
}
ifdp[rasusize][casusize][restasusize]!=-1.0{
returndp[rasusize][casusize][restasusize];
}
letmutans=0.0;
ifrest==0{
ans=1.0;
}else{
ans+=(process2(n,rest-1,r-2,c+1,dp)/8.0);
ans+=(process2(n,rest-1,r-1,c+2,dp)/8.0);
ans+=(process2(n,rest-1,r+1,c+2,dp)/8.0);
ans+=(process2(n,rest-1,r+2,c+1,dp)/8.0);
ans+=(process2(n,rest-1,r+2,c-1,dp)/8.0);
ans+=(process2(n,rest-1,r+1,c-2,dp)/8.0);
ans+=(process2(n,rest-1,r-1,c-2,dp)/8.0);
ans+=(process2(n,rest-1,r-2,c-1,dp)/8.0);
}
dp[rasusize][casusize][restasusize]=ans;
returnans;
}
fnmain(){
letn=3;
letk=2;
letrow=0;
letcolumn=0;
println!("{}",knight_probability(n,k,row,column));
}

c++完整代码如下:

#include
#include
usingnamespacestd;
doubleprocess2(intn,intrest,intr,intc,vector>>&dp){
if(r<0||r>=n||c<0||c>=n){
return0;
}
if(dp[r][c][rest]!=-1){
returndp[r][c][rest];
}
doubleans=0;
if(rest==0){
ans=1;
}
else{
ans+=(process2(n,rest-1,r-2,c+1,dp)/8);
ans+=(process2(n,rest-1,r-1,c+2,dp)/8);
ans+=(process2(n,rest-1,r+1,c+2,dp)/8);
ans+=(process2(n,rest-1,r+2,c+1,dp)/8);
ans+=(process2(n,rest-1,r+2,c-1,dp)/8);
ans+=(process2(n,rest-1,r+1,c-2,dp)/8);
ans+=(process2(n,rest-1,r-1,c-2,dp)/8);
ans+=(process2(n,rest-1,r-2,c-1,dp)/8);
}
dp[r][c][rest]=ans;
returnans;
}
doubleknightProbability(intn,intk,introw,intcolumn){
vector>>dp(n,vector>(n,vector(k+1,-1.0)));
returnprocess2(n,k,row,column,dp);
}
intmain(){
intn=3,k=2,row=0,column=0;
doubleresult=knightProbability(n,k,row,column);
cout<<"Result:"<return0;
}

c完整代码如下:

#include
#include
doubleprocess2(intn,intrest,intr,intc,double***dp){
if(r<0||r>=n||c<0||c>=n){
return0;
}
if(dp[r][c][rest]!=-1){
returndp[r][c][rest];
}
doubleans=0;
if(rest==0){
ans=1;
}
else{
ans+=(process2(n,rest-1,r-2,c+1,dp)/8);
ans+=(process2(n,rest-1,r-1,c+2,dp)/8);
ans+=(process2(n,rest-1,r+1,c+2,dp)/8);
ans+=(process2(n,rest-1,r+2,c+1,dp)/8);
ans+=(process2(n,rest-1,r+2,c-1,dp)/8);
ans+=(process2(n,rest-1,r+1,c-2,dp)/8);
ans+=(process2(n,rest-1,r-1,c-2,dp)/8);
ans+=(process2(n,rest-1,r-2,c-1,dp)/8);
}
dp[r][c][rest]=ans;
returnans;
}
doubleknightProbability(intn,intk,introw,intcolumn){
double***dp=(double***)malloc(n*sizeof(double**));
for(inti=0;idp[i]=(double**)malloc(n*sizeof(double*));
for(intj=0;jdp[i][j]=(double*)malloc((k+1)*sizeof(double));
for(intt=0;t<=k;t++){
dp[i][j][t]=-1;
}
}
}
doubleresult=process2(n,k,row,column,dp);
for(inti=0;ifor(intj=0;jfree(dp[i][j]);
}
free(dp[i]);
}
free(dp);
returnresult;
}
intmain(){
intn=3,k=2,row=0,column=0;
doubleresult=knightProbability(n,k,row,column);
printf("Probability:%f\n",result);
return0;
}

声明:内容由AI生成

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
央视直播!国乒30日赛程确定,孙颖莎、陈梦、樊振东登场迎敌!

央视直播!国乒30日赛程确定,孙颖莎、陈梦、樊振东登场迎敌!

乒谈
2024-05-28 23:17:22
四问四答告诉你,9.98万起售的比亚迪秦LDM-i值不值得买?

四问四答告诉你,9.98万起售的比亚迪秦LDM-i值不值得买?

娱乐圈的笔娱君
2024-05-29 02:28:45
为什么很多人怀念毛主席?读完这首词,你就明白了!

为什么很多人怀念毛主席?读完这首词,你就明白了!

李舟
2024-04-24 19:05:27
中央定调:2024年70岁及以上老人可享“3项优待”,包括农民在内

中央定调:2024年70岁及以上老人可享“3项优待”,包括农民在内

天下纵览
2024-04-13 12:39:22
真是太给力了!马伊琍担任新疆文旅宣传大使,森林北被狠狠打脸

真是太给力了!马伊琍担任新疆文旅宣传大使,森林北被狠狠打脸

安山客
2024-05-29 12:35:40
众生相!卢卡28+15+10丢关键罚球咬球衣自责 戈贝尔唐斯击掌庆祝

众生相!卢卡28+15+10丢关键罚球咬球衣自责 戈贝尔唐斯击掌庆祝

厝边人侃体育
2024-05-29 11:18:12
又一个瓜迪奥拉!切尔西新帅实力曝光,两大优势明显,高层赚大了

又一个瓜迪奥拉!切尔西新帅实力曝光,两大优势明显,高层赚大了

老妞读书谈
2024-05-29 09:58:24
朝小野大绿营搞事!绿欲“罢免”24名“蓝委”,蓝营会坐以待毙?

朝小野大绿营搞事!绿欲“罢免”24名“蓝委”,蓝营会坐以待毙?

谢志传
2024-05-29 14:50:29
广东8大新星亮相!4将未露面,杜锋外甥考上暨大,或成离队第一人

广东8大新星亮相!4将未露面,杜锋外甥考上暨大,或成离队第一人

刺头体育
2024-05-29 10:42:44
美方扶持的4位中国富豪开始露头了:在华疯狂捞金,扭头捐给美国

美方扶持的4位中国富豪开始露头了:在华疯狂捞金,扭头捐给美国

明月历史说
2024-05-09 13:38:08
斯大林格勒的残酷数学:苏军一个精锐师9天打光,每天只需死100人

斯大林格勒的残酷数学:苏军一个精锐师9天打光,每天只需死100人

蜉蝣说
2024-05-27 21:16:34
曾经红极一时, 如今穷的快“喝西北风”的五位明星, 你觉得谁最惨

曾经红极一时, 如今穷的快“喝西北风”的五位明星, 你觉得谁最惨

娱乐的小灶
2024-05-29 07:15:08
31分+40分+33分!联盟第1!七年磨一剑,欧文再夺冠地位能超哈登

31分+40分+33分!联盟第1!七年磨一剑,欧文再夺冠地位能超哈登

世界体育圈
2024-05-28 10:21:06
浙商银行董事长陆建强:希望银行员工都能既把工作做好,也把家庭管好

浙商银行董事长陆建强:希望银行员工都能既把工作做好,也把家庭管好

凤凰网财经plus
2024-05-29 11:11:50
四年1.78亿,重返独行侠!最强冲冠球队诞生,联盟格局大变

四年1.78亿,重返独行侠!最强冲冠球队诞生,联盟格局大变

篮球谈资哦
2024-05-29 14:05:47
爱德华兹:我生涯从未被横扫过 今天我们打出了高水准

爱德华兹:我生涯从未被横扫过 今天我们打出了高水准

直播吧
2024-05-29 11:28:17
回顾岳父发现女婿与妻子在地窖运动,气得提刀杀人分尸,判了15年

回顾岳父发现女婿与妻子在地窖运动,气得提刀杀人分尸,判了15年

玲说百态味
2024-05-23 18:29:19
不是绝美,但很有风情!更真实,更能打动你的美。

不是绝美,但很有风情!更真实,更能打动你的美。

北冥说事
2024-05-26 11:42:08
婚后生活不谐,老公居然帮妻子安排异性按摩,还主动腾出房间

婚后生活不谐,老公居然帮妻子安排异性按摩,还主动腾出房间

想养大熊猫
2024-05-08 10:15:01
欧文:要为在明尼苏达的G5做好准备 届时的观众将会充满敌意

欧文:要为在明尼苏达的G5做好准备 届时的观众将会充满敌意

直播吧
2024-05-29 14:38:06
2024-05-29 15:36:49
moonfdd
moonfdd
福大大架构师每日一题
405文章数 7关注度
往期回顾 全部

科技要闻

王传福再放狠话,燃油车要成“非主流”

头条要闻

餐馆老板诉民警喝茅台吃野味不付钱 法院:系老板宴请

头条要闻

餐馆老板诉民警喝茅台吃野味不付钱 法院:系老板宴请

体育要闻

巴黎主席向皇马索要8000万 佛爷:1分不给

娱乐要闻

张若昀怎么剧外比剧内更惨兮兮…

财经要闻

东方通收购藏雷 花6亿买来"业绩变脸"

汽车要闻

新哈弗H6苦练内功 向燃油车绝缘智能SAY NO

态度原创

本地
艺术
时尚
健康
公开课

本地新闻

食味印象|歙县限定!枇杷味儿的清甜初夏

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

入夏之后,中年女性少穿“一身黑、一身花”,这么搭配不显老

晚餐不吃or吃七分饱,哪种更减肥?

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版