| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5030 人关注过本帖
标题:C语言火柴编程题
取消只看楼主 加入收藏
liyue6822532
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-2-28
结帖率:57.14%
收藏
已结贴  问题点数:20 回复次数:3 
C语言火柴编程题


用n根火柴,拼成一个a+b=c的等式,’+’和’=’各占两根火柴,每个数字占固定的火柴,各数字占用火柴棒数如下:
0  1  2  3  4  5  6  7  8  9所用的火柴跟数如下:
6, 2, 5, 5, 4, 5, 6, 3, 7, 6
注意
1、    没有前置0,除非本身为0,a,b,c>=0.
2、    a+b=c和b+a=c记为不同的等式,除非a=b.
恰好把n根火柴用完,问一共可以凑多少种等式。
输入

多组测试样例,每组测试样例一个整数n,表示火柴棒总数。(n<=24).
输出

每组测试样例输出一个整数,表示能够凑成的等式的总个数。
样例输入

14
18

样例输出

2
9

提示

样例1:0+1=1 1+0=1 两种。
搜索更多相关主题的帖子: C语言 
2016-03-01 19:11
liyue6822532
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-2-28
收藏
得分:0 
我的想法是用循环找到俩个数字  然后判断这俩个数字加起来所用的火柴跟数是否小于n-4(就是减去加号和等号的跟数) 如果满足  就判断这俩数字加起来等于的数是否满足剩下的火柴跟数,然后代码写成了下面。。。
#include<stdio.h>
int main()
{
    int x[10] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 6 };
    int m, n, a, b, c, d=0,i,j;
    int k = 0, s = 0, sum = 0,sum1=0;
    while (scanf("%d", &m) != EOF)
    {
        for (i = 0; i < 1000; i++)
        {
            for (j = 0; j < 1000; j++)
            {
                b = i;
                a = j;
                while (d >= 0)
                {
                    d = b % 10;
                    b = b / 10;
                    n = d;
                    for (c = 0; c < 10; c++)
                    {
                        if (x[c] == n)
                        {
                            sum += x[c];
                        }
                    }
                }
                while (d >= 0)
                {
                    d = a % 10;
                    a = a / 10;
                    n = a;
                    for (c = 0; c < 10; c++)
                    {
                        if (x[c] == n)
                        {
                            sum += x[c];
                        }
                    }
                }
                if (sum < m - 4)
                {
                    s = i + j;
                    b = s;
                    while (d >= 0)
                    {
                        d = b % 10;
                        b = b / 10;
                        n = d;
                        for (c = 0; c < 10; c++)
                        {
                            if (x[c] == n)
                            {
                                sum1 += x[c];
                            }
                        }
                    }
                    if (sum1 == n - 4 - sum)
                    {
                        k++;
                        sum = 0; sum1 = 0;
                    }
                }
            }
        }
        printf("%d\n", k);
        k = 0;
    }
}
。。。。。。然后并不能跑起来。。。白小C求大神指点。
2016-03-01 19:14
liyue6822532
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-2-28
收藏
得分:0 
回复 3楼 rjsp
题目限制是24根
2016-03-01 22:41
liyue6822532
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-2-28
收藏
得分:0 
谢谢各位大神的简答
2016-03-02 18:34
快速回复:C语言火柴编程题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026333 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved