zoukankan      html  css  js  c++  java
  • uva340 数字匹配检索问题

    这道题目大意是:给定一个secret code,然后输入guess code,让你编程给出提示,提示的格式是(i,j),其中i表示strong match的个数,j表示weak match的个数。所谓strong&weak match就有一点像猜数字游戏了,strong match表示数字正确且位置也正确;weak match表示数字正确但位置不正确。要求每输入一个guess code就要输出相应的hint。

    我的思路是先循环一次将所有strong match找出,再建立一个存下表的数组,将不是strong match的下标加入该数组中,方便之后寻找weak match。因为题目要求hint必须满足总匹配数和strong 匹配数都达到最大,所以有strong match 的情况就不要将它归到weak match里边了。之后找weak match就简单了,将secret code数组未匹配的位置遍历一遍,统计出1-9这九个数字各出现几次,再统计guess code数组,然后每一个数字取出现次数少的即为该数字的weak match的次数(e.g.1在secret code出现了2次,在guess code出现了一次,则weak 匹配数必然=1,同理将2,3……9都求出来相加即为结果)

    代码如下

    #include<iostream>
    using namespace std;
    int main()
    {
    	int n;
    	int col=0;
    	while(cin>>n&&n!=0)
    	{
    		col++;
    		int* scode=new int[n];
    		for (int i=0;i<n;i++) cin>>scode[i];
    		cout<<"Game "<<col<<":"<<endl;
    		while (1)
    		{
    			int strong,weak;
    			strong=weak=0;
    			int* gcode=new int[n];
    			for (int i=0;i<n;i++) cin>>gcode[i];
    			if (gcode[0]==0) 
    			{
    				delete gcode;
    				break;
    			}
    			int* unmatch=new int[n];
    			int index_unmatch=0;
    			for (int i=0;i<n;i++)
    			{
    				if (scode[i]==gcode[i]) strong++;
    				else
    				{
    					unmatch[index_unmatch++]=i;
    				}
    			}
    			if (index_unmatch>0)
    			{
    				int scount[10]={0};
    				int gcount[10]={0};
    				for (int i=0;i<index_unmatch;i++)
    				{
    					scount[scode[unmatch[i]]]++;	//scount[1]存放的即1在scode中出现次数
    					gcount[gcode[unmatch[i]]]++;
    				}
    				for (int i=1;i<10;i++)
    				{
    					weak=weak+(scount[i]<gcount[i]?scount[i]:gcount[i]);	//取小的数
    				}
    			}
    			
    			cout<<"    ("<<strong<<","<<weak<<")"<<endl;
    			delete unmatch;
    			delete gcode;
    		}
    		delete scode;
    	}
    }


  • 相关阅读:
    C#连接MySQL
    国双面试题
    Redis入门安装配置
    vs2013密钥
    单例模式
    用R画韦恩图
    Snipaste截图
    秩和检验
    用R包中heatmap画热图
    OTU(operational taxonomic units),即操作分类单元
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3366165.html
Copyright © 2011-2022 走看看