StarHui


私信TA

用户名:uq_15565483691

访问量:3939

签 名:

只要你想,世界就会出现奇迹!

等  级
排  名 326
经  验 5422
参赛次数 2
文章发表 25
年  龄 18
在职情况 学生
学  校 西安汽车职业大学
专  业 人工智能

  自我简介:

大一新生一枚 一起学习交流,请加V:StarHui0415 个人公众号:阿辉的大本营 公众号会每天更新一道算法题!!!

TA的其他文章

解题思路:

                本题解采用暴力解法,就是使用多层for循环来求公、母、雏鸡的个数。

                原来的思路:使用3层for循环,来枚举这三种鸡的数目,然后通过三者之和是否为100,三者的钱数之和是否为100以及雏鸡是否为3的倍数来输出公、母、雏鸡的头数。

                借鉴了某个题解的思路:使用2层for循环,这样可以得到很多种公鸡和母鸡的个数,在利用总和为100,得到很多种雏鸡的个数,再判断钱数是否为100;雏鸡是否为3的倍数;

注意事项:
                一定要对每种鸡的最大数有一个大概,这样才能避免无效循环,还有就是一定要记住雏鸡必须为3的倍数
参考代码:

原来的思路

#include <stdio.h>
int main()
{
    int i,j,k;
    for(i = 0;i < 20;i++)//公鸡为5块钱一只,不能超过20只
    {
        for(j = 0;j < 34;j++)//母鸡为3块钱一只,不能超过34头
        {
            for(k = 0;k < 100;k++)//雏鸡为1块钱3只,但总共为100只鸡
            {
                if(i + j + k == 100 && 5 * i + 3 * j + k / 3 == 100 && k % 3 == 0)//必须加上k % 3 == 0;因为雏鸡的个数必须是3的倍数
                    printf("cock=%d,hen=%d,chicken=%d\n",i,j,k);
            }
        }
    }
    return 0;
}

借鉴优化后的

#include <stdio.h>
int main()
{
    int i,j,k;
    for(i = 0;i < 20;i++)
    {
        for(j = 0;j < 34;j++)
        {
            k = 100 - i - j;//雏鸡的个数
            if(5 * i + 3 * j + k / 3 == 100 && k % 3 == 0)//记住雏鸡是3的倍数
                printf("cock=%d,hen=%d,chicken=%d\n",i,j,k);
        }
    }
    return 0;
}



 

0.0分

2 人评分

  评论区

  • «
  • »