一、迭代法:有一定的规律(s=s+n//s+=n)
每次循环都是从上次运算结果中获得数据,本次运算的结果都是要为下次运算作准备。
例:
1.100以内所有数之和
2.求阶乘
3.求年龄
4.折纸
5.棋盘放粮食
6.猴子吃桃子
7.落球问题:一个球从10米高度落下,每次弹起2/3的高度,问第五次弹起后的高度是多少?
8.兔子生兔子的问题
一对新生兔,到第三个月开始生小兔,以后每个月都会生一对小兔,小兔不断的长大也会生小兔,假设兔子不会死,每一次只能生一对(公母)。问第24个月末能生多少只兔子。
**int 是32的位的,有时计算的数太大会超出范围,运算结果会显示是0,这时换成double计算试试。
二、穷举法
用循环把各种可能的情况都给走一遍,然后用if条件把满足要求的结果给筛选出来。
1.找100以内与7有关的数
for (int a = 1; a <= 100;a++ )
{
if(a%7==0||a/10==7||a%10==7)
{
Console.WriteLine("100以内与7有关的数是"+a);
}
}
2.硬币有1分、2分、5分的若干个,要组合出一毛五,有哪些组合方式
for (int a = 1; a <= 15;a++ )
{
for (int b = 1; b <= 7;b++ )
{
for (int c = 1; c <= 3;c++ )
{
if (a + 2 * b + 5 * c == 15)
{
Console.WriteLine("需要一分的"+a+"个,两分的"+b+"个,五分的"+c+"个");
}
}
}
}
3.买东西。小张有100元购物券,香皂5元,牙刷2元,洗发水20元,如何花完100元。
for (int a = 0; a <= 20;a++ )
{
for (int b = 0; b <= 50; b++)
{
for (int c = 0; c <= 5; c++)
{
if (5*a+2*b+20*c==100)
{
Console.WriteLine("香皂"+a+"个,牙刷"+b+"个,洗发水"+c+"个");
}
}
}
}
4,(百鸡百钱)有100文钱,要买100只鸡回家,公鸡2文钱一只,母鸡一文钱一只,小鸡半文钱一只。如何买。
(百马百石)有100石粮食,每匹大马驮2石,每匹中马驮1石,每两匹小马驮1石,要用100匹马驮完100石粮食如何驮完?
for (int a = 0; a <= 50; a++)
{
for (int b = 0; b <= 100; b++)
{
for (int c = 0; c <= 200; c++)
{
if (2 * a + b + 0.5 * c == 100)
{
Console.WriteLine("买公鸡" + a + "只,母鸡" + b + "只,小鸡" + c + "只");
}
}
}
}
5.某侦查队接到一项紧张任务,要求在A、B、C、D、E、F六个队员中尽以下可能
A、B至少去一个 a+b>=1
A和D不能一起去 a+d<=1
A E F三人只两人去 a+e+f==2
B C 都去或者都不去 b+c!=1
C D中去一个 c+d==1
若D不去,则E也不去 d+e==0||d==1
6. 123()45()67()8()9=100;要求在()填写+或-使等式成立。
for (int a = -1; a <= 1;a+=2 )
{
for (int b = -1; b <= 1;b+=2 )
{
for (int c = -1; c <= 1; c += 2)
{
for (int d = -1; d <= 1; d += 2)
{
if(123+a*45+b*67+c*8+d*9==100)
{
Console.WriteLine("A="+a+";B="+b+";C="+c+";D="+d);
}
}
}
}
}
}