问题 M: 数码管

xiaoxiao2021-02-28  117

题目描述 液晶数码管用七笔阿拉数字表示的十个数字,把横和竖的一 个短划都称为一笔,即7有3笔,8有7笔等。对于十个数字一种排列,要做到两相邻数字都可以由另一个数字加上几笔或减去几笔组成,但不能又加又减。比如 7→3是允许的,7→2不允许。任意输入一组数,判断是否符合上述规则,注意,1在右边。 输入 每行输入一个0~9的排列,数字之间用空格分隔,以-1作为输入结束 输出 输出YES或NO 样例输入 4 1 0 7 3 9 5 6 8 2 3 5 1 6 2 7 9 0 4 8 -1 样例输出 YES NO

题解:打表(离散数学的邻接矩阵)

AC代码:

#include <iostream> #include<cstdio> using namespace std; int a[10][10]={{1,1,0,0,0,0,0,1,1,0}, {1,1,0,1,1,0,0,1,1,1}, {0,0,1,0,0,0,0,0,1,0}, {0,1,0,1,0,0,0,1,1,1}, {0,1,0,0,1,0,0,0,1,1}, {0,0,0,0,0,1,1,0,1,1}, {0,0,0,0,0,1,1,0,1,0}, {1,1,0,1,0,0,0,1,1,1}, {1,1,1,1,1,1,1,1,1,1}, {0,1,0,1,1,1,0,1,1,1}}; int main() { int n[10]; int x; while(1){ scanf("%d",&x); int flag=0; if(x==-1) break; else n[0]=x; for(int i=1;i<10;i++){ cin>>n[i]; } for(int i=0;i<9;i++){ if(a[n[i]][n[i+1]]==0){ flag=1; } if(flag){ cout<<"NO"<<endl; break; } } if(flag==0) cout<<"YES"<<endl; } return 0; }
转载请注明原文地址: https://www.6miu.com/read-66138.html

最新回复(0)