ACM 训练日志记录 · 思考 · 成长 提交 / 修改记录
王梓豪 / 题目列表训练档案
导出

数码管

来源:其他 ★ 1000

本题活力0.31按难度、完成结果与训练证据估算

算法如山行则将至

题目描述

判断数字排列是否满足相邻数字笔画差仅加或仅减。

代码

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int pre[10][10] = {
    //   0  1  2  3  4  5  6  7  8  9
        {0, 0, 1, 1, 1, 1, 1, 0, 0, 1}, // 0
        {0, 0, 1, 0, 0, 1, 1, 0, 0, 0}, // 1
        {1, 1, 0, 1, 1, 1, 1, 1, 0, 1}, // 2
        {1, 0, 1, 0, 1, 1, 1, 0, 0, 0}, // 3
        {1, 0, 1, 1, 0, 1, 1, 1, 0, 0}, // 4
        {1, 1, 1, 1, 1, 0, 0, 1, 0, 0}, // 5
        {1, 1, 1, 1, 1, 0, 0, 1, 0, 1}, // 6
        {0, 0, 1, 0, 1, 1, 1, 0, 0, 0}, // 7
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // 8
        {1, 0, 1, 0, 0, 0, 1, 0, 0, 0}  // 9
    };
    int a[10];
    while (cin>>a[0]&&a[0]!=-1)
    {
        for (int i=1;i<10;i++)
        {
            cin>>a[i];
        }

        bool flag=true;

        for (int i=0;i<9;i++)
        {
            if (pre[a[i]][a[i+1]])
            {
                flag=false;
                break;
            }
        }
        if (flag)
            cout<<"YES\n";
        else
            cout<<"NO\n";
    }
    return 0;
}