金币问题
来源:互联网 发布:山田优 知乎 编辑:程序博客网 时间:2024/06/11 02:41
问题 假金币
Gold Bar银行收到可靠消息:在M组金币中每组都有一个重量不同的假金币(其他金币的重量相同)。经济危机之后他们只有一台天平可用。用这台天平,可以称量出左边托盘中的物体是轻于、重于或等于右边托盘中的物体。
为了分别出假金币,银行职员将所有的金币编为1-N号。然后用天平称量不同的金币组合,每次仔细记载称量金币的编号和结果。
现在要求编写一个程序,帮助银行职员根据称量记录找出假金币的编号。
输入:
第一行为金币组数M,后面是每组金币情况。
第二行输入两个空格隔开的整数N和K,N是金币的总数(2<=N<=1000),K是称量的次数(1<=K<=100)。随后的2K行记录称量的情况和结果,连续两行记录一次称量:第1行首先是Pi(1<=Pi<=N/2) ,表示两边托盘中放置的金币数目,随后是左边托盘中Pi个金币编号和右边托盘中Pi个金币编号,所有的数之间都由空格隔开;第2行用<,>,=和记录称量结果。
<表示左边托盘中的金币比右边的轻
>表示左边托盘中的金币比右边的重
=表示左右两边托盘中的金币一样重
输出
输出假金币的编号。如果根据称量记录无法确定假金币,输出0。
输入样例
1
5 3
2 1 2 3 4
<
1 1 4
=
1 2 5
=
输出样例
3
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
int group_num,total_gold_num,weight_num,gold_num,current_gold_num,temp;
int i,j,k,x;
int in_flag; //穷举金币存在标志
int false_gold,false_gold_num,false_gold_temp;
char sign;
vector<int> v1;
vector<int> v2;
vector<char> v3;
//打开文件
ifstream filein("input.txt");
//读取总组数
filein >> group_num;
for (i=0;i<group_num;i++)
{
//读取每组的金币总数
filein >> total_gold_num;
false_gold_num=0;
//清零v1,v2,v3
v1.clear();
v2.clear();
v3.clear();
//读取每组的称量次数
filein >> weight_num;
for (j=0;j<weight_num;j++)
{
//读取每次称量金币数量
filein >> gold_num;
v1.push_back (gold_num);
for (k=0;k<2*gold_num;k++)
{
filein >> current_gold_num;
v2.push_back(current_gold_num);
}
filein >> sign;
v3.push_back(sign);
}
//穷举所有金币
for (j=1; j<=total_gold_num; j++)
{
false_gold_temp=j;
for (k=0;k<weight_num;k++)
{
if (false_gold_temp!=0)
{
in_flag = 0;
if (k==0)
temp = 0;
else
temp = temp + v1[k-1]*2;
for (x=0;x<2*v1[k];x++)
{
if (j == v2[x+temp])
{
in_flag = 1;
break;
}
}
//如果没有x号金币,而天平不平衡,或者有x号金币而天平平衡,则x号金币不是假金币
if (((in_flag==0) && (v3[k]!='=')) || ((in_flag==1) && (v3[k]=='=')))
{
false_gold_temp=0;
}
}
}
if (false_gold_temp!=0)
{
false_gold_num++;
false_gold=false_gold_temp;
}
}
if (false_gold_num==1)
cout << false_gold << endl;
else
cout << 0 << endl;
}
//关闭文件
filein.close();
return 0;
}
- 金币问题
- 金币问题
- 金币问题
- 第一次作业金币问题
- 海盗分金币问题
- 海盗分金币问题
- 金币阵列问题
- 金币阵列问题
- 金币阵列问题
- 金币阵列问题
- 金币阵列问题
- 金币阵列问题
- 海盗分金币问题
- 金币阵列问题
- 金币阵列问题
- 金币阵列问题
- 海盗分金币问题
- 金币阵列问题
- dr.com 802.1x for linux(Ubuntu)
- SWF文件结构分析
- 全面认识敏捷建模思想(1)
- myeclipse 开发struts(三)
- 对话框中的消息函数
- 金币问题
- 小宝语录
- 又一个发现,大家分享
- 几个正在进行的数据挖掘竞赛
- Java基础知识总结(1)
- 测试贴
- Struts2 简介
- 利用Opengl实现类似于角色漫游的场景
- 蓝牙休闲娱乐平台(毕业设计)第七部份