首页 > 代码库 > 1224循环————迭代法、穷举法

1224循环————迭代法、穷举法


for()循环。
四要素:初始条件,循环条件,状态改变,循环体。
执行过程:初始条件--循环条件--循环体--状态改变--循环条件....
注意:for的小括号里面分号隔开,for的小括号后不要加分号。
for的嵌套。
应用:迭代法,穷举法。
一、迭代法:有一定规律。
每次循环都是从上次运算结果中获得数据,本次运算的结果都是要为下次运算做准备。
例:
1.100以内所有数的和。

int sum = 0;
for (int i = 1; i <= 100; i++)
{
sum = sum + i;
}
Console.WriteLine("求和结果:"+sum+"");

技术分享

2.求阶乘

int jieCheng = 1;
for (int i = 5; i >= 1; i--)
{
jieCheng = jieCheng * i;
}
Console.WriteLine("5!=" + jieCheng);

技术分享


3.求年龄。

int age = 16;
for (int i = 5; i >= 1; i--)
{
age = age - 2;
}
Console.WriteLine("第一个孩子的年龄是" + age + "岁");

技术分享


4.折纸。

double h_Zong, h_DanZhang = 0.0002;
int zhangShu = 1;
for (int i = 30; i >= 1; i--)
{
zhangShu = zhangShu * 2;
}
h_Zong = zhangShu * h_DanZhang;
Console.WriteLine("折叠30次后,高度是" + h_Zong + "米");

技术分享


5.棋盘放粮食( 自己做)

decimal shuMu = 1, sum = 1;
for (int i = 1; i < 64; i++)
{

shuMu = shuMu * 2;
sum = sum + shuMu;
}
decimal w_danWei = (decimal)0.000026;
decimal w_ZongZhong = sum * w_danWei;
Console.WriteLine("棋盘粮食总共:" + w_ZongZhong + "Kg");

技术分享


6.猴子吃桃子

int day = 6, n = 1;
for (; day >= 1; day--)
{
n = 2 * (n + 1);
}
Console.WriteLine("原来桃子总共有" + n + "个");

技术分享


7.落球问题。(自己做)一个球从10米高度落下,每次弹起2/3的高度。问第五次弹起后的高度是多少?

double h = 10;
for (int i = 5; i >= 1; i--)
{
h = h * 2 / 3;
}
Console.WriteLine("球第五次弹起时高度是" + h + "米");

技术分享


8.兔子小兔子的问题。一对新生兔,到三个月开始生一对小兔,以后每个月都会生一对小兔,小兔不断长大也会生小兔。假设兔子不死,每次只能生一对(公母),问第24末有多少只兔子?

int sum = 0, tu1 = 1, tu2 = 1;
for (int i = 22; i >= 1; i--)
{
sum = tu1 + tu2;
tu1 = tu2;
tu2 = sum;
}
Console.WriteLine("24月末共有" + sum + "只兔子");

技术分享

二、穷举法:
用循环把各种可能的情况都给走一遍,然后用if条件把满足要求的结果给筛选出来。
1.找100以内的与7有关的数。

for (int i = 1; i <= 100; i++)
{
if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7)
Console.Write(i + "\t");
}

技术分享


2.有三种硬币若干:1分,2分,5分。要组合1毛5,有哪些组合方式?

for (int a = 0; a <= 15; a++)
{
for (int b = 0; b <= 7; b++)
{
for (int c = 0; c <= 3; c++)
{
if (a * 1 + b * 2 + c * 5 == 15)
{
Console.WriteLine("1分硬币:" + a + "个2分硬币" + b + "个3分硬币" + c + "个");
}
}
}
}

技术分享

3.买东西。小张过元旦发了100元的购物券,他要买香皂(5元),牙刷(2元),洗发水(20元)。要想把100元正好花完,如何买这三样东西?

for (int i = 0; i <= 20; i++)
{
for (int j = 0; j <= 50; j++)
{
for (int m = 0; m <= 5; m++)
{
if (5 * i + 2 * j + 20 * m == 100)
{
Console.WriteLine("香皂:"+i+"牙刷:"+j+"洗发水:"+m);
}
}
}
}

技术分享


4.百鸡百钱。有100文钱,要买100只鸡回家。公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只。如何买?

for (int i = 0; i <= 50; i++)
{
for (int j = 0; j <= 100; j++)
{
for (int m = 0; m <= 200; m++)
{
if (2 * i + j + 0.5 * m == 100 && i + j + m == 100)
{
Console.WriteLine("公鸡" + i + "母鸡" + j + "小鸡" + m);
}
}
}
}

技术分享


百马百石。有100石粮食,母匹大马驮2石,每匹中马驮1石,每两匹小马驹一起驮1石。要用100匹马驮完100石粮食,如何按排?
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
问应当让哪几个人去?

for (int a = 0; a <= 1; a++)
{
for (int b = 0; b <= 1; b++)
{
for (int c = 0; c <= 1; c++)
{
for (int d = 0; d <= 1; d++)
{
for (int e = 0; e <= 1; e++)
{
for (int f = 0; f <= 1; f++)
{
if (a + b > 0 && a + d != 2 && a + e + f == 2 && b + c != 1 && c + d == 1 && d >= e)
{
Console.WriteLine("A" + a + "B" + b + "C" + c + "D" + d + "E" + e + "F" + f);
}
}
}
}
}
}
}

技术分享


6.123()45()67()8()9=100;要求在()里面填写+或-使等式成立。

for (int a = -1; a <= 2; a += 2)
{
for (int b = -1; b <= 2; b += 2)
{
for (int c = -1; c <= 2; c += 2)
{
for (int d = -1; d <= 2; d += 2)
{
if (123 + a * 45 + b * 67 + c * 8 + d * 9 == 100)
{
Console.WriteLine(a + "" + b + "" + c + "" + d);
}
}
}
}

}

技术分享

1224循环————迭代法、穷举法