首页 > 试题广场 >

False coin

[编程题]False coin
  • 热度指数:3823 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
The "Gold Bar"bank received information from reliable sources that in their last group of N coins exactly one coin is false and differs in weight from other coins (while all other coins are equal in weight). After the economic crisis they have only a simple balance available (like one in the picture). Using this balance, one is able to determine if the weight of objects in the left pan is less than, greater than, or equal to the weight of objects in the right pan. In order to detect the false coin the bank employees numbered all coins by the integers from 1 to N, thus assigning each coin a unique integer identifier. After that they began to weight various groups of coins by placing equal numbers of coins in the left pan and in the right pan. The identifiers of coins and the results of the weightings were carefully recorded. You are to write a program that will help the bank employees to determine the identifier of the false coin using the results of these weightings.

输入描述:
The first line of the input file contains two integers N and K, separated by spaces, where N is the number of coins (2<=N<=1000 ) and K is the number of weightings fulfilled (1<=K<=100). The following 2K lines describe all weightings. Two consecutive lines describe each weighting. The first of them starts with a number Pi (1<=Pi<=N/2), representing the number of coins placed in the left and in the right pans, followed by Pi identifiers of coins placed in the left pan and Pi identifiers of coins placed in the right pan. All numbers are separated by spaces. The second line contains one of the following characters: '<', '>', or '='. It represents the result of the weighting:
'<' means that the weight of coins in the left pan is less than the weight of coins in the right pan,
'>' means that the weight of coins in the left pan is greater than the weight of coins in the right pan,
'=' means that the weight of coins in the left pan is equal to the weight of coins in the right pan.


输出描述:
Write to the output file the identifier of the false coin or 0, if it cannot be found by the results of the given weightings.
示例1

输入

5 3
2 1 2 3 4
<
1 1 4
=
1 2 5
=

输出

3
头像 健康快乐最重要
发表于 2020-03-05 11:53:34
思路:设硬币有三种状态 0(正常) 1(超重) -1(低重) ,初始都设置成2因为只有一个硬币是错误的,说明只要发现不平衡,那个硬币就在这左右两组中,其他的都是正确的1.当<时,说明左边轻,右边重,左边都设成低重,右边都设成超重,其他硬币都是正确的2.当>时,说明左边重,右边轻,左边都 展开全文
头像 csyfZhang
发表于 2020-04-21 14:54:23
题目的注意事项+易错数据https://blog.csdn.net/csyifanZhang/article/details/105657272↑更好的阅读体验 注意事项 每一组数据,可能又会有多个没有判断过,但是也可能==只有一个没判断过,剩下全是真的==,此时这个未判断过的就是答案。 但是如果 展开全文
头像 牛客995515196号
发表于 2023-02-14 17:34:34
#include <iostream> using namespace std; int all_in(int x,int left[1000][1000],int right[1000][1000],int n) { int flag_l=1; for(int i=1 展开全文
头像 宁静的冬日
发表于 2022-03-07 16:52:42
搞了好久 #include<iostream> #include<cstring> using namespace std; #define MAXN 1000 #define MAXK 100 int a[MAXK + 1][MAXN + 1];//a[i][]记录第i次称 展开全文