自述"/>
关于百文买百鸡问题 一个新手的思路自述
大家好,我是个刚刚决定进入IT界的小白,目前刚刚学了3个月的C#和Unity。
期间前辈给了一个百文买百鸡的经典的算法问题让我尝试解答,说实话,刚刚拿到题目的时候,虽然我一眼就知道怎么用数学解答,但是对于刚刚学了循环语句的我来说,虽然知道得用循环解答,但还是无法一下子就用代码表现出来,这时候我是选择先罗列出数学的解法,让后在将起转为代码,这样一个中转的思路,我个人感觉应该听时候初学者遇到没头绪的时候使用。 如果有什么不对的地方,还望前辈大神指正。
题目:用一百文钱,买一百只鸡。其中公鸡五文一只,母鸡三文一只,小鸡一文三只。问:一共能买xxx只公鸡,xxx只母鸡,xxx只小鸡。(不要求一定要每种鸡都要有购买,请将所有的可能罗列出来)
思路:
1、先将数学解题思路写出来:
假设买x只公鸡,y只母鸡,z只小鸡,那么就必须满足以下两个条件:x+y+z=100且5x+3y+z/3=100;
这时候我们就知道需要满足以上两个条件,才能输出结果。我们就将他稍作变化用代码表达出来。
2、
解答1:
namespace ForTest
{
public int num;
static void Main( string[] args )
{
for( i = 0; i < 20; i++ )//公鸡个数
{
for( j = 0; j < 33; j++ )
{
for( k = 0; k < 300; k++ )
{
if( i+j+k ==100 && 5i+3j+k/3 == 100 )
{
num++;
Console.WriteLine( “第{0}种买法:{1}只公鸡, {2}只母鸡, {3}只小鸡”, num, i, j, k );
}
}
}
}
}
}
另外还能改进为只用两层for循环嵌套
namespace ForTest
{
public int num;
static void Main( string[] args )
{
for( i = 0; i < 20; i++ )//公鸡个数
{
for( j = 0; j < 33; j++ )
{
if( ( 100-i-j ) % 3 ==0 && 5i+3j+( 100-i-j )/3 == 100 )
{
num++;
Console.WriteLine( “第{0}种买法:{1}只公鸡, {2}只母鸡, {3}只小鸡”, num, i, j, k );
}
}
}
}
}
我觉代码到时次要,最主要是思路得有。当然光有思路没代码也没用,所以我觉得思路千千万万,前提是你得有基础,知道要怎么用代码表现出来;当然相对于有代码基础的来说,思路相对更重要。
只是个人看法,有不同欢迎指正(但是请不要喷人)。
更多推荐
关于百文买百鸡问题 一个新手的思路自述
发布评论