码迷,mamicode.com
首页 > 其他好文 > 详细

for 穷举 迭代

时间:2016-03-10 23:37:32      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:

for循环拥有两类:
穷举:
把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况。

迭代:
从初始情况按照规律不断求解中间情况,最终推导出结果。

案例:

//单位给发了一张150元购物卡,
//拿着到超市买三类洗化用品。
//洗发水15元,香皂2元,牙刷5元。
//求刚好花完150元,有多少种买法,
//每种买法都是各买几样?
//设洗发水x 150/15==10
//牙刷y 150/5==30
//香皂z 150/2==75

int sum = 0;
int biao = 0;
for (int x = 0; x <= 10; x++)
{
for (int y = 0; y <= 30; y++)
{
for (int z = 0; z <= 75; z++)
{
sum++;
if (15 * x + 5 * y + 2 * z == 150)
{
biao++;
Console.WriteLine("这是第" + biao + "种买法:洗发水" + x + "瓶,牙刷" + y + "香皂" + z + "块");

}
}
}

}
Console.WriteLine("共有" + biao + "种买法!");
Console.WriteLine(sum);
Console.ReadLine();

技术分享

案例

 

//羽毛球拍15元,球3元,水2元。200元每种至少一个,有多少可能
//设球拍X 200/15=20
//设球y 200/3=66
//设水 200/2=100
int sum = 0;
for (int x = 1; x <= 20;x++ )
{
for (int y = 1; y <= 66;y++ )
{
for (int z = 1; z <= 100;z++ )
{ if(15*x+3*y+2*z==200)
{
sum++;
Console.WriteLine("羽毛球拍"+x+"个,球"+y+"个,水"+z+"瓶");
}
}
}

 

} Console.WriteLine(sum);
Console.ReadLine();

技术分享

 

案例
//百鸡百钱:公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,
//总共只有100文钱,如何在凑够100只鸡的情况下刚好花完100文钱?每种至少一只
//公鸡设为 g 100/2=50
//母鸡设为 m 100/1=100
//小鸡设为 x 100/0.5=200

技术分享

 


//百鸡百钱:公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,
//总共只有100文钱,如何在凑够100只鸡的情况下刚好花完100文钱?
//公鸡设为 g 100/2=50
//母鸡设为 m 100/1=100
//小鸡设为 x 100/0.5=200
int sum = 0;
for (int g = 0; g <= 50; g++)
{
for (int m = 0; m <= 100; m++)
{
for (int x = 0; x <= 200; x++)
{

if (2 * g + 1 * m + 0.5 * x == 100 && g + m + x == 100)
{
sum++;
Console.WriteLine("公鸡" + g + "只," + "母鸡" + m + "只," + "小鸡" + x + "只");
}
}
}

}
Console.WriteLine(sum);
Console.ReadLine();

 

技术分享

 

while 循环
其实是for循环的变形写法
for(int i = 1; i<=5;i++)
{
循环体;
}
上面的for循环可以写成
int i= 1;
for(;i<=5;)
{
循环体;
i++;
}

 

写成while就是以下样式
int i= 1;
while(表达式(i<=5))
{
循环体;
状态改变(i++);
}

 

 

 

 

do

{
循环体;
状态改变(i++);
}while(表达式(i<=5))
注意:do while是不管满不满足表达式,我都会先执行一遍。

 


跳转语句:
break:跳出整个循环
continue:跳出本次循环,继续下次循环。

 

 

迭代:
从初始情况按照规律不断求解中间情况,最终推导出结果。

案例:

int a = 7;//884800000
int i = 1;
while (true)
{
a *= 2;

if (a >= 884800000)
{
Console.WriteLine(i);
Console.WriteLine(a);
break;
}
i++;
}

技术分享

 

for 穷举 迭代

标签:

原文地址:http://www.cnblogs.com/nannan-0305/p/5263804.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!