栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 1029 False coin

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 1029 False coin

#include <iostream>#include <string>using namespace std;const int MAX = 1001;int n, k, p, total = 0;//total:不等式出现的次数,其他为计数的char sign;int t[MAX] = {0};//每次输入的数据,输入一组数据就处理一组int r[MAX] = {0};//确定为真的硬币int w[MAX] = {0};//记录可能为假硬币出现的次数//出现在大于那边的w[i]++,出现在小于那边的w[i]--,假硬币不可能又轻又重int main(){       int i;       cin >> n >> k;    while (k--)    {//输入        cin >> p;        for (i = 0; i < 2 * p; i++)        { cin >> t[i];        }        cin >> sign;//输入<,>,=        if (sign == '=')        {//标记肯定为真的硬币 for ( i = 0; i < 2 * p; i++) {     r[t[i]] = 1; }        }        else if (sign == '<')        { //左轻右重 total++; for ( i = 0; i < p; i++) {//p之前为不等号左边的     w[t[i]]--; } for ( i = p; i < 2 * p; i++) {//p开始为不等号右边的     w[t[i]]++; }        }        else if (sign == '>')        {//左重右轻 total++; for ( i = 0; i < p; i++) {//p之前为不等号左边的     w[t[i]]++; } for (i = p; i < 2 * p; i++) {//p开始为不等号右边的     w[t[i]]--; }        }    }//end while       //假币在不等式中每次都应该出现    int count = 0, pos = 0;    for (i = 1; i <= n; i++)    {        if (r[i]==1)        {//真的硬币忽过 continue;        }        if (w[i] == total || w[i] == 0 - total)        {//找每次都出现在不等式一边的"假币",比真重的情况或者比真轻的情况 count++; pos = i;        }    }    if (count != 1)    {//假币唯一则输出        cout << 0 << endl;    }    else    {        cout << pos << endl;    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377619.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号