1012: 数码管
时间限制: 10 Sec 内存限制: 128 MB提交: 276 解决: 184
[提交][状态][讨论版]
题目描述
液晶数码管用七笔阿拉数字表示的十个数字,把横和竖的一 个短划都称为一笔,即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
提示
来源
#include <iostream>
using namespace std;
bool contain(int m,int n){
int i,j,s=0;
string str[10] = {"123456","23","12457","12347","2367","13467","134567","123","1234567","123467"};
int mlen = str[m].length();
int nlen = str[n].length();
int min = mlen<nlen?mlen:nlen;
for(i=0;i<mlen;i++){
for(j=0;j<nlen;j++){
if(str[m][i]==str[n][j]) s++;
}
}
if(s==min) return true;
else return false;
}
int main(){
int b[10],f,i;
while(1){
cin>>b[0];
if(b[0]==-1) break;
for(i=1;i<10;i++){
cin>>b[i];
}
f=1;
for(i=0;i<9;i++){
if((contain(b[i],b[i+1]))==0){
f=0;
break;
}
}
if(f==0) cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
return 0;
}