數碼管

【問題描述】

液晶數碼管用七筆阿拉數字表示的十個數字,把橫和豎的一 個短劃都稱爲一筆,即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>
#include<string>
using namespace std;
bool judge(string a,string b)
{
    int alen=a.length();
    int blen=b.length();
    if(alen>blen) 
    {  
       string k=b; 
       b=a; 
       a=k; 
       alen=a.length();
       blen=b.length();
    }
    int sum=0;
    for(int i=0;i<alen;i++)
    {
        for(int j=0;j<blen;j++)
        {
            if(a[i]==b[j])
            {
                sum++;
            }
        }
    }
    if(sum==alen) return true;
    else return false;
}
int main()
{
    string num[10]={"123567","36","13457","13467","2346","12467",
                    "124567","136","1234567","123467"};
                    //9細節決定成敗,I hate bug so much 
    int x;
    while(cin>>x&&x!=-1)
    {
        int a[10];
        a[0]=x;
        int flag=0;
        for(int i=1;i<10;i++)
        {
            cin>>a[i];
        }
        for(int i=0;i<9;i++)
        {
            if(judge(num[a[i]],num[a[i+1]])) continue;
            else 
            {
                flag=1;break;
            }
        }
        if(flag==1) cout<<"NO"<<endl;
        else cout<<"YES"<<endl;
    }
    return 0;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章