C#基础 for 穷举、迭代

//循环可以解决的问题类型
//穷举,把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况。
//单位给发了一张150元购物卡,
//拿着到超市买三类洗化用品。
//洗发水15元,香皂2元,牙刷5元。
//求刚好花完150元,有多少种买法,
//每种买法都是各买几样?
//洗发水 x 10
//牙刷 y 30
//香皂 z 75
int ci = 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++)
{
ci++;
if (15 * x + y * 5 + z * 2 == 150)
{
biao++;
Console.WriteLine("第{0}种买法:洗发水{1}瓶,牙刷{2}支,香皂{3}块。", biao, x, y, z);
}
}
}
}
Console.WriteLine("总共有{0}种买法。", biao);
Console.WriteLine(ci);
Console.ReadLine();

 


 

 

//迭代,从初始情况按照规律不断求解中间情况,最终推导出结果。
//纸张可以无限次对折,纸张厚度为0.07毫米。
//问多少次对折至少可以超过8848?
//double height = 0.07;//8848m=8848000
//int ci = 0;
//while(height<=8848000)
//{
// ci++;
// height *= 2;//height=height*2;
//}
//Console.WriteLine(ci);
//Console.ReadLine();

//百鸡百钱:公鸡2文钱一只,母鸡1文钱一只,
//小鸡半文钱一只,总共只有100文钱,
//如何在凑够100只鸡的情况下刚好花完100文钱?

int ci = 0;
for (int a = 0; a <= 50; a++)
{
for (int b = 0; b <= 100; b++)
{
for (int c = 0; c <= 200; c++)
{
if (a * 2 + b * 1 + c * 0.5 == 100)
{
if (a + b + c == 100)
{
ci++;
Console.WriteLine("总共有{0}种买法:公鸡{1}只,母鸡{2}只,小鸡{3}只", ci, a, b, c);
}
}
}

}
}
Console.ReadLine();


//现有1分,2分,5分钱无数
//求组成1元钱,有多少种组合方式

int biao = 0;
for (int a = 0; a <= 100; a++)
{
for (int b = 0; b <= 50; b++)
{
for (int c = 0; c <= 20; c++)
{
if (a * 1 + b * 2 + c * 5 == 100)
{
biao++;
Console.WriteLine("总共有{0}种组合方式:一分的{1}个,2分的{2},5分的{3}", biao, a, b, c);
}
}
}
}
Console.WriteLine(biao);
Console.ReadLine();


//五个小朋友排成一队,问第一个多大了,
//第一个说比第二个大两岁,问第二个多大了,
//第二个说比第三个大两岁。。。以此类推,
//问第5个小朋友,说自己3岁了。问第一个小朋友几岁了?

int a = 3;
for (int i = 5; i > 1; i--)
{
 a += 2;
}
Console.WriteLine(a);

posted @ 2016-06-26 16:41  Dream&er  阅读(220)  评论(0编辑  收藏  举报