zoukankan      html  css  js  c++  java
  • 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);
    }
  • 相关阅读:
    mysql笔记3_存储引擎
    mysql笔记2_约束
    mysql笔记1_数据库发展史
    JDOM2.x|XPath小记
    关于批量导入数据以及调优的一些总结
    MD5加密算法
    document.ready和onload的区别——JavaScript文档加载完成事件 .
    java反编译工具
    容易被忽略CSS特性
    Struts2基本包作用详解
  • 原文地址:https://www.cnblogs.com/wuchanming/p/4158958.html
Copyright © 2011-2022 走看看