首页 > 代码库 > careercup-中等难度 17.5
careercup-中等难度 17.5
17.5 写一个函数来模拟游戏。
游戏规则如下:
4个槽,里面放4个球,球的颜色有4种,红(R ),黄(Y),绿(G),蓝(B)。比如, 给出一个排列RGGB,表示第一个槽放红色球,第二和第三个槽放绿色球,第四个槽放蓝色球。
你要去猜这个排列。比如你可能猜排列是:YRGB。当你猜的颜色是正确的,位置也是正确的, 你就得到一个hit,比如上面第3和第4个槽猜的和真实排列一样(都是GB),所以得到2个hit。 如果你猜的颜色在真实排列中是存在的,但位置没猜对,你就得到一个pseudo-hit。比如, 上面的R,猜对了颜色,但位置没对,得到一个pseudo-hit。
对于你的每次猜测,你会得到两个数:hits和pseudo-hits。写一个函数, 输入一个真实排列和一个猜测,返回hits和pseudo-hits。
C++实现代码:
#include<iostream>using namespace std;void count(char arr1[],char arr2[],int n){ int i; int hit=0; int fre[100]={0}; for(i=0;i<n;i++) fre[arr1[i]]++; for(i=0;i<n;i++) { if(arr1[i]==arr2[i]) { hit++; continue; } if(fre[arr2[i]]!=0) fre[arr2[i]]--; } int sum=0; for(i=0;i<n;i++) sum+=fre[arr1[i]]; cout<<"hit: "<<hit<<endl; cout<<"fhit: "<<n-sum-hit<<endl;}int main(){ char arr1[5]={‘R‘,‘G‘,‘B‘,‘Y‘,‘R‘}; char arr2[5]={‘G‘,‘G‘,‘R‘,‘R‘,‘F‘}; count(arr1,arr2,5);}
careercup-中等难度 17.5
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。