遊戲規則:
有四個插口, 可以放有四個球,顏色分別為紅色(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...