专栏首页青青天空树数码管问题(c++实现)

数码管问题(c++实现)

    描述:液晶数码管用七笔阿拉数字表示的十个数字,把横和竖的一 个短划都称为一笔,即7有3笔,8有7笔等。对于十个数字一种排列,要做到  两相邻数字都可以由另一个数字加上几笔或减去几笔组成,但不能又加又减。比如 7→3是允许的,7→2不允许。任意输入一组数,判断是否符合上述规则。 

    输入:每行输入一个0~9的排列,数字之间用空格分隔,以-1作为输入结束

  输出:输入YES或NO

input:

4107395682
 3  5 1 6  2  7 9  0  4  8
0

output:
YES
NO

分析:有这样一种思路,将每一笔表上顺序,这样每个数字就可以表示成一个字符串,如1为“35”,然后判断相邻两个是否符合规则可以用较段数字的字符串是否为较大字符串的子集来判断,如果是则符合
 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 
 5 //判断相邻两个是否可相互转化
 6 int s(string max, string min)
 7 {
 8     int n = 0;
 9     for (int i=0; i < min.size(); i++)
10     {
11         for (int j = 0; j < max.size(); j++)
12         {
13             if (min[i] == max[j])
14                 n++;
15         }
16     }
17     if (n == min.size())
18         return 1;
19     else
20         return 0;
21 }
22 
23 //判断函数
24 int cal(int a[])
25 {
26     int k;
27     string b[10] = { "123567", "35", "23467", "23456", "1345", "12456", "124567", "235", "1234567", "123456" };//将数码管中7话用数字1-7标记,用字符串存每个数字
28     //逐个比较a中相邻两个
29     for (int i = 0; i < 9; i++)
30     {
31         
32         if (b[a[i]].size()>b[a[i + 1]].size())
33             k = s(b[a[i]], b[a[i+1]]);
34         else
35             k = s(b[a[i+1]], b[a[i]]);
36         if (!k)
37             return 0;
38     }
39     return 1;
40 }
41 
42 int main()
43 {
44     int a[10];
45     while ((cin >> a[0]) && (a[0] != -1))
46     {
47         for (int i = 1; i < 10; i++)
48             cin >> a[i];
49         if (cal(a))
50             cout << "Yes" << endl;
51         else
52             cout << "No" << endl;
53     }
54     system("pause");
55     return 0;
56 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 挖掘机技术哪家强(c++实现)

    描述:为了用事实说明挖掘机技术到底哪家强,组织一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。

    用户2038589
  • 2015-偶数求和

    有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程...

    用户2038589
  • 2034-人见人爱A-B(c++实现)

    参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法...

    用户2038589
  • 剑指Offer-构建乘积数组

    package Array; import sun.security.util.Length; /** * 构建乘积数组 * 给定一个数组A[0,1,....

    武培轩
  • 水果Fruit(母函数) - HDU 2152

    转眼到了收获的季节,由于有TT的专业指导,Lele获得了大丰收。特别是水果,Lele一共种了N种水果,有苹果,梨子,香蕉,西瓜……不但味道好吃,样子更是好看。 ...

    ACM算法日常
  • 「CodeForces - 598B」Queries on a String

    字符串s(1 ≤ |s| ≤ 10 000),有m(1 ≤ m ≤ 300)次操作,每次给l,r,k,代表将r位置插入l位置前,执行k(1 ≤ k ≤ 1 00...

    饶文津
  • 15.瀑布流、测量

    六月的雨
  • 1250 Fibonacci数列

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果 题目描述 Description 定义:f0=...

    attack
  • 初级程序员面试不靠谱指南(三)

    二、指针的好基友的& 1.&的意义。说&是指针的好基友其实不恰当,因为&这个符号在C/C++不止有一种含义,但是因为其经常会和指针一起出现在被问的问题列表上,所...

    一心一怿
  • PTA 7-1 畅通工程之局部最小花费问题(35 分)

    7-1 畅通工程之局部最小花费问题(35 分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城...

    Kindear

扫码关注云+社区

领取腾讯云代金券