• uva340 Master-Mind Hints (UVA


    题目简要

    题目意思很简单每个测试都由原题目在第一行,然后后面的都是去猜的答案,如果猜测的位置正确那么输出的结果的数对里面的第一个数就加一,如果仅答案正确(原题目里有这个数,但是位置不一样)那么就在输出数对的第二个数加一。

    并且需要注意已经判断过的数是不能再判断第二次的。

    例如以下的样例

    1 3 5 5

    1 1 2 3

    4 3 3 5

    1 3 5 5是原来的题目,对于1 1 2 3来说只有第一个1是位置正确并且答案也对的,那么经过计算后原题目的1和现在猜测的1都去掉然后变成了 3 5 5 和1 2 3然后发现还有一个最后的3是答案正确但是位置不对,所以第一个输出的数对是(1,1)以此类推第二个是猜测的第二个数3和第四个数5满足第一个条件所以输出的答案是(2,0)

    如何实现

    首先第一个条件很好判断啊,直接把原来的题目和输出的答案进行对照就行了。

    第二个条件可能难一点,我的想法也是直接判断,写两个for然后外面for是代表原题目的每个数,里面的for是答案的每个数一一对应如果有一样的,那么第二个条件加一

    对于去除数据来说我的想法是直接开两个bk就行了,bk是1的时候说明这个数已经用过了,每次先判断一下bk就行了。

    然后就是注意先判断第一个条件 还有的就是注意输出格式。

    我的代码

    #include <iostream>
    #include <cstring>
    //#include "fp.h"
    using namespace std;
    int num[1100];
    int num2[1100];
    int bk1[1100];
    int bk2[1100];
    struct node
    {
    	int x,y;
    }p[1100];
    main()
    {
    	//fop();
    	int n;
    	int nnum=0;
    	while(cin>>n&&n)
    	{
    		for(int i=0;i<n;i++)
    		scanf("%d",&num[i]);
    		int jk=0;
    		while(1)
    		{
    			int ans1,ans2;
    			ans1=ans2=0;
    			memset(bk1,0,sizeof(bk1));
    			memset(bk2,0,sizeof(bk2));
    			for(int j=0;j<n;j++)
    			scanf("%d",&num2[j]);
    			if(num2[0]==0)
    			break;
    			for(int j=0;j<n;j++)
    			if(num[j]==num2[j])
    			{
    				ans1++;bk1[j]=bk2[j]=1;
    			}
    			for(int j=0;j<n;j++)
    			for(int k=0;k<n;k++)
    			if(!bk1[j]&&!bk2[k])
    			{
    				if(num[j]==num2[k])
    				{
    					ans2++;bk1[j]=bk2[k]=1;
    				}
    			}
    			//cout<<ans1<<" "<<ans2<<endl;
    			p[jk].x=ans1;p[jk].y=ans2;
    			//cout<<p[jk].x<<" "<<p[jk].y<<endl;
    			jk++;
    		}
    		printf("Game %d:
    ",++nnum);
    		for(int j=0;j<jk;j++)
    		printf("    (%d,%d)
    ",p[j].x,p[j].y);
    	}
    }
    
  • 相关阅读:
    k8s学习笔记之五:Pod资源清单spec字段常用字段及含义
    k8s学习笔记之四:资源清单定义入门
    k8s学习笔记之三:k8s快速入门
    k8s学习笔记之一:kubernetes简介
    k8s学习笔记之二:使用kubeadm安装k8s集群
    centos7安装elasticsearch6.3.x集群并破解安装x-pack
    Centos6搭建sftp服务器
    底层互害模式,深契民心
    你不视我为子女,我凭什么视你为父母
    nodejs的桌面应用(electron)
  • 原文地址:https://www.cnblogs.com/baccano-acmer/p/9741688.html
Copyright © 2020-2023  润新知