阅读944 返回首页    go 阿里云 go 技术社区[云栖]


蛮力法找假金币

#include <iostream>
using namespace std;

bool notFalseGold(int i, int *num, char op)
{
    bool found = false;
    for (int j = 1; j <= num[0] * 2; j++)
    {
        if (num[j] == i)
        {
            found = true;
            break;
        }
    }
    if (found && op == '=' || !found && op != '=' )
        return false;
    else
        return true;
}
int main()
{
    int number[101][1001];//行表示编号,列表示数据
    char op[101];         //对比的结果:< > =这三种
    int n, k;

    cin >> n >> k;
    for (int i = 0; i < k; i++)
    {
        cin >> number[i][0];//0号存两边的砝码个数
        for (int j = 1; j <= number[i][0] * 2; j++)
        {
            cin >> number[i][j];
        }
        cin.get();//吸收回车符
        cin >> op[i];//读取比较的结果
    }

    int t, i, no;
    for (t = 0, i = 1; i <= n; i++)
    {
        int j;
        for (j = 0; j < k && notFalseGold(i, number[i], op[j]); j++)
        {
            ;//此处只是分号
        }
        if (j < k)
            continue;
        t ++; //可能的假金币加1
        if (t > 1)
            break;//如果存在多个假的,那就不符合条件
        else
            no = i;//记下假金币的编号
    }
    if (t == 1)
    {
        cout << no << endl;
    }
    else
    {
        cout << 0 << endl;
    }
    return 0;
}

最后更新:2017-04-02 15:15:28

  上一篇:go 筛法求素数
  下一篇:go 微软 Build 2012 大会首日实录