极手游游戏网 | 手游库 | 手机版 | 网站地图
所在位置:首页 > 游戏资讯 > 高手进阶

猜数字攻略(算法:猜数字游戏)

文章来源:极手游作者:小狐狸发布时间:2022-12-15 22:00:06

标题:

你正在和你的朋友玩猜数字的游戏。游戏规则如下:

写一个秘密数字,让你的朋友猜猜它是什么。

每次朋友猜的时候,你都会给他提示,告诉他有多少位数属于号码,准确位置猜对了(叫“牛”,公牛),有多少位数属于猜对了但定位不准的号码(叫“牛”,母牛)。

按照提示继续猜,直到猜中暗号。

请写一个根据秘密数字和朋友的猜测返回提示的函数。返回的字符串格式为xAyB,其中X和Y为数字,A代表公牛,B代表母牛。

XA表示密位中有x位,位置与密位一致。

YB表示密位中有Y位,但位置与密位不一致。

请注意,暗号和朋友的猜测都可能包含重号,每个号码只能算一次。

示例:

输入: secret='1123 ',guess='0111 0111 '

输出: '1A1B '

说明:个朋友的猜测中第一个1是牛,第二个或者第三个1可以算是牛。

想法:

在遍历字符串的过程中,记录A的数量和其他元素的出现次数。

对于每个其他元素,secrect和guess的最小出现次数是对应于该元素的B的数量。

代码:

class Solution { public : string get hint(string secret,string guess){ int n=secret . size();int x=0;unordered_mapchar,int secret_map,guess _ mapfor(int I=0;在;I){ if(secret[I]==guess[I])x;else { secret _ map[secret[I]];guess _ map[guess[I]];} } int y=0;for(auto pair : guess _ map){ auto itr=secret _ map . find(pair . first);如果(itr!=secret _ map . end()){ y=min(pair . second,itr-second);} } ostringstream ssss x ' A ' y ' B;返回ss . str();} };

相关新闻
同类软件
软件推荐
最新问答
手游新品榜
热门推荐
大掌门2金将怎么组合

大掌门2金将怎么组合