面試題 猜顏色球遊戲

2021-08-27 15:42:13 字數 1237 閱讀 5621

遊戲規則:

有四個插口, 可以放有四個球,顏色分別為紅色(r),黃色(y),綠色(g), 和藍色(b),放的顏色順序位置都可以是隨機的,如:rygb,ygrb等都是合法放置。

我們需要猜測四個顏色,比如原插口放置球是rgby;我們猜測rrgg,那麼第乙個r正好對應我們有乙個"hit",猜了個g,但是位置沒對應,就有乙個"pseudo-hit".而且不能算兩個g,因為原插口只有乙個g。

要我們設計乙個演算法可以返回hits和pseudo-hits的數量。

注意:插口有rgby,猜ggrr只能是乙個hit和乙個pseudo hit。原書的程式應該是有點錯誤的,按他的程式這個解答就是1個hit和3個pseudo hit了。

先吃透他的規則,注意特殊情況,然後就好做了。

書中提到的注意地方:

1 **清晰,比如定義乙個結構體返回結果

2 定義額外函式

這裡用到的乙個最基礎的知識就是計算排序counting sort,這個演算法很重要,好像出現的地方很多,就算不是直接使用counting sort,類似的使用方法經常出現,比如這裡也用到了相關知識。計數演算法參考:

程式:

#includeusing namespace std;

const int slotscolors = 4;

int rgbytoindex(char c)

}struct result

};result gues****s(char *slots, char *guess)

result res;

int counting[slotscolors];

for (int i = 0; i < slotscolors; i++)

else if (counting[rgbytoindex(guess[i])] != -1)

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

return res;

}int main()

; char guess[4] = ;

result res = gues****s(slots, guess);

cout<

cout<

運算結果:

面試題 08 10 顏色填充(dfs)

編寫函式,實現許多編輯軟體都支援的 顏色填充 功能。待填充的影象用二維陣列 image 表示,元素為初始顏色值。初始座標點的橫座標為 sr 縱座標為 sc。需要填充的新顏色為 newcolor 周圍區域 是指顏色相同且在上 下 左 右四個方向上存在相連情況的若干元素。請用新顏色填充初始座標點的周圍區...

遊戲公司unity面試題

1.unity中碰撞器 collider 和觸發器 trigger 的區別?碰撞器 collider 有碰撞效果,istrigger false,可以呼叫oncollisionenter stay exit函式 觸發器 trigger 沒有碰撞效果,istrigger true,可以呼叫ontrig...

面試題 PHP面試題

建議 比如是系統配置,缺少了無法執行,自然使用 require 如果某一段程式少了,只是少了統計 訪問的,不是必不可少的。可以使用 include 而加不加 once 就是效率上的區別,雖然系統會幫你考慮只包含一次,但系統的判斷會降低效率,因此,更應該在開發之初,把目錄結構調整高好,盡量不使用 on...