int dj = 100 / 3; for ( ; dj >= 0; dj--) { int t = (100 - dj * 3)*3; if ((t + dj) == 100) { MessageBox.Show("大鸡=" + dj.ToString() + " 小鸡=" + t.ToString()); } }
//百钱买百鸡。 public class Chickens { public void Chicken() { for (int i = 0; i <= 100; i++) { for (int j = 0; j <= 100; j++) { for (int k = 0; k <= 100; k++) { if ((5 * i + 3 * j + k == 100) && (i + j + k * 3 == 100)) { Console.WriteLine("公鸡数量:{0}母鸡数量:{1}小鸡数量:{2}", i, j, 3 * k); } } } } }我已经测试了。
这个y取值 太大了y取值和x有关系。并且两次循环 不好
int y=100/3; for(int i=1;i<y;i++) { int a = 100 - 3 * i; if (a * 3 + i == 100) { Console.WriteLine("大:"+i+"金额"+i*3+" 小:"+3*a+"金额"+a); Console.ReadLine(); } }
x+y = 100 3x+y/3=100 so--> 3*(100-y) + y/3 = 100 y取值1-100间 所以可以这么设计程序 int TotalNum = 100;//总共购买数量 float TotalMoney = 100;//总共购买价格 int BigMoney = 3;//大鸡价格 double LittleMoney = 1.0/3.0;//小鸡价格 int x = 0;//大鸡购买数量 int y = 0;//小鸡购买数量 double TempTotal = 0; for(int i = 70; i <= TotalNum; i++) { TempTotal = BigMoney * (TotalNum - i) + i * LittleMoney; if(TempTotal == TotalMoney) { y = i; x = TotalNum - y; break; } } 这个设计有个好处就是,可以求解任何数量和金额的设置,这是人脑和电脑的结合..完美.. 嗯,确实完美..
纠正下哈,前面是为了测试,跟踪,设置值有问题,正确应该是: for(int i = 0; i <= TotalNum; i++) { TempTotal = BigMoney * (TotalNum - i) + i * LittleMoney; if(TempTotal == TotalMoney) { y = i; x = TotalNum - y; break; } }
for (bigChecken = 1; bigChecken < 34; bigChecken++)
{
littleChecken = 100 - bigChecken;
if ((3 * bigChecken + littleChecken / 3 == 100) && (bigChecken + littleChecken) == 100)
{
MessageBox.Show("大鸡:" + bigChecken.ToString() + ",小鸡:" + littleChecken.ToString());
break;
}
}
for ( ; dj >= 0; dj--)
{
int t = (100 - dj * 3)*3;
if ((t + dj) == 100)
{
MessageBox.Show("大鸡=" + dj.ToString() + " 小鸡=" + t.ToString());
}
}
得出推断逻辑:
3X+Y=100;
X+Y=100;
X取值大于等于0,小于等于33;
Y取值大于等于1,小于等于100;
==========>
//int x=0;//大鸡个数
//int y=0;//小鸡个数
for(int x=0;x<=33;x++)
{
for(int y=1;y<=100;y++)
{
if((3*x+y)==100 && ((x+y)==100))
{
Console.WriteLine("大鸡购买个数:{0},小鸡购买个数:{1} 的组合类型可符合要求",x,y);
}
}
}
得出推断逻辑:
3X+Y/3=100;
X+Y=100;3X+Y/3 = X+Y2X = 2Y/3
Y=3X
X+Y=100=>X+3X=100
X=25
public class Chickens
{
public void Chicken()
{
for (int i = 0; i <= 100; i++)
{
for (int j = 0; j <= 100; j++)
{
for (int k = 0; k <= 100; k++)
{
if ((5 * i + 3 * j + k == 100) && (i + j + k * 3 == 100))
{
Console.WriteLine("公鸡数量:{0}母鸡数量:{1}小鸡数量:{2}", i, j, 3 * k);
}
}
}
}
}我已经测试了。
for(int i=1;i<y;i++)
{
int a = 100 - 3 * i;
if (a * 3 + i == 100)
{
Console.WriteLine("大:"+i+"金额"+i*3+" 小:"+3*a+"金额"+a);
Console.ReadLine();
}
}
3x+y/3=100
so--> 3*(100-y) + y/3 = 100
y取值1-100间
所以可以这么设计程序
int TotalNum = 100;//总共购买数量
float TotalMoney = 100;//总共购买价格
int BigMoney = 3;//大鸡价格
double LittleMoney = 1.0/3.0;//小鸡价格
int x = 0;//大鸡购买数量
int y = 0;//小鸡购买数量
double TempTotal = 0;
for(int i = 70; i <= TotalNum; i++)
{
TempTotal = BigMoney * (TotalNum - i) + i * LittleMoney;
if(TempTotal == TotalMoney)
{
y = i;
x = TotalNum - y;
break;
}
}
这个设计有个好处就是,可以求解任何数量和金额的设置,这是人脑和电脑的结合..完美..
嗯,确实完美..
for(int i = 0; i <= TotalNum; i++)
{
TempTotal = BigMoney * (TotalNum - i) + i * LittleMoney;
if(TempTotal == TotalMoney)
{
y = i;
x = TotalNum - y;
break;
}
}