码迷,mamicode.com
首页 > 其他好文 > 详细

careercup-中等难度 17.5

时间:2014-12-12 08:48:53      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   sp   for   on   

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

标签:style   blog   io   ar   color   os   sp   for   on   

原文地址:http://www.cnblogs.com/wuchanming/p/4158958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!