穷举:
把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况;
//单位发了一张150元的购物卡,到超市买洗发水、香皂、牙刷; //洗发水15元,香皂2元,牙刷5元; //求刚好花完150元,有多少种买法; //每种买法都是各买几样; //设洗发水x 150/15==10 //牙刷y 150/5==30 //香皂z 150/2==75 int biao = 0; int sum = 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();
迭代:
从初始情况按照规律不断求解中间情况,最终推导出结果。
//纸张可以无限次对折,纸张厚度为0.07毫米; //问多少次对折后,可以超过8848; int a = 7; int i = 1; for (; ; ) { a *= 2; if(a>=884800000) { Console.WriteLine(i); Console.WriteLine(a); break; } i++; } Console.ReadLine();
while循环:
其实是for循环的变形写法;
for(int i=1;i<=5;i++)
{
循环体
}
=》
int i=1;
while(;i<=5;)
{
循环体;
i++;
}
int a = 7; int i = 1; while(true) { a *= 2; if(a>=884800000) { Console.WriteLine(a); Console.WriteLine(i); break; } i++; } Console.ReadLine();