猜數字遊戲

2021-09-25 06:10:22 字數 1367 閱讀 5492

你正在和你的朋友玩 猜數字(bulls and cows)遊戲:你寫下乙個數字讓你的朋友猜。每次他猜測後,你給他乙個提示,告訴他有多少位數字和確切位置都猜對了(稱為「bulls」, 公牛),有多少位數字猜對了但是位置不對(稱為「cows」, 奶牛)。你的朋友將會根據提示繼續猜,直到猜出秘密數字。

請寫出乙個根據秘密數字和朋友的猜測數返回提示的函式,用 a 表示公牛,用 b 表示奶牛。

請注意秘密數字和朋友的猜測數都可能含有重複數字。

示例 1:

輸入: secret = "1807", guess = "7810"

輸出: "1a3b"

解釋: 1 公牛和 3 奶牛。公牛是 8,奶牛是 0, 1 和 7。

示例 2:

輸入: secret = "1123", guess = "0111"

輸出: "1a1b"

解釋: 朋友猜測數中的第乙個 1 是公牛,第二個或第三個 1 可被視為奶牛。

說明: 你可以假設秘密數字和朋友的猜測數都只包含數字,並且它們的長度永遠相等。

把guess中每乙個數字對應的數量在array中做乙個記錄,求他們的和,這個和是由三部分組成的 , 第一部分是位置和數字都對的,第二部分是數字對但是位置不對的,第三部分是兩者都不對的.

第一部分我們設定變數來記錄,第二部分利用上訴的關係來求:

所以需要在程式的最後進行一次求和,這個和代表第三部分的值,所以如果和為0,那麼第二部分的值就等於長度減第一部分,如果不為0,就需要長度減第一部分 再減第三部分(也就是當前陣列的和),得到第二部分

class solution ;

if(secret.size() != guess.size())

return ret;

if(secret.size() == 0 || guess.size() == 0)

return "0a0b";

for(int i = 0; i < guess.size(); i++)

for(int i = 0; i < secret.size(); i++)

else if(array[secret[i]-48] > 0)

}for(int i = 0; i < 10; i++)

cout<<"failnum = "

failnum = guess.size() - correctnum;

else

failnum = guess.size() - failnum - correctnum;

ret = std::to_string(correctnum)+'a'+std::to_string(failnum)+'b';

return ret;

}};

猜數字遊戲

問題描述 猜數字遊戲 隨機出乙個兩位數,然後讓你猜,直到猜對為止。猜對後可以提示選擇是否再玩一次。include include using namespace std int main srand unsigned int time null int num rand 90 10 隨機出乙個兩位數...

猜數字遊戲

author 徐權 data 2015728 function 猜數字遊戲 實用平台 vs2012及以上 如果要移植到其他平台scanf s和puts s 應改為scanf和puts即可 include include include include define n 5 定義陣列大小,從而決定猜的...

猜數字遊戲

初次見到題目,覺得很簡單,可是仔細敲 時候卻發現根本無法處理如下情況 正確序列 1,2,3,4 猜測序列 1,1,1,1 我選擇用字串儲存正確的,然後如果對應上就把它變成字母,下一次就不會算他了,可是如果這樣子 正確 1,2,3,4 錯誤 2,3,3,4 錯誤的3算了,正確卻沒有算,這樣顯然不符合題...