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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

hdu1846巴什博弈(java)

發布時間:2025/3/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu1846巴什博弈(java) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接
有一堆石子一共有 n 個,兩人輪流進行,每走一步可以取走 1…m 個石子,最先取光石子的一方為勝。
對于博弈的理解,就是圍繞找必勝點和必敗點而解決問題,首先分析m
1:m>=n先走必贏
2:m+ 1=n先走必輸,因為只能拿1-m個,那么剩下的一定可以直接拿完
3:m +1>n時候,換位思考,如果我是第二拿,我只想剩m +1一定能贏,如果我是先拿,我想讓我成為可選擇的第二狀態,所以先取者就想取到剩(m +1)的倍數為止,因為剩下m+ 1倍數,無論第二個人怎么拿,第一個人總能拿完,總剩下m+1的倍數,所以是必勝態。但是這也不是絕對的,因為都選擇最優策略,所以一旦剛開始就是m +1的倍數,那么先拿的人就涼了。狀態就轉移了。
附上代碼,暑假寫的題目,順便復習一下

/** 巴士博弈*/ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.StreamTokenizer;public class hdu1846 {public static void main(String[] args) throws IOException {StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));in.nextToken();int k=(int)in.nval;for(int i=0;i<k;i ++ ){in.nextToken();int n=(int)in.nval;in.nextToken();int m=(int)in.nval;if(n%(m +1)!=0) {out.println("first");}elseout.println("second");out.flush();}} }

總結

以上是生活随笔為你收集整理的hdu1846巴什博弈(java)的全部內容,希望文章能夠幫你解決所遇到的問題。

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