贪心的孩子

Problem Description
“想不出来”是一个贪心的孩子,他天天想着怎么让自己变的有钱,有一天他想到去做生意,他想用自己身上唯一的n元钱去买a物品,再用a物品按一定的比例换b物品。。。。。最后再把东西卖了。
比如Sample里的数据,想不出来先用10000买了12000个1物品,再用1物品换到了15600个2物品,再将2物品卖了得到21840元钱。
可是,想不出来不知道怎样才可以得到最多的钱,所以他请你来帮帮他。(任务物品可以分割为很细小的一块,同时,每个物品或钱最多只能进行一次买卖,特别请注意:一旦将物品转换为钱,则交易就结束了)

Input
每组数据第一行输入一个n(n <= 10000)(表示想不出来一开始有的钱数)和一个m(m <= 10000)(表示接下来有m组兑换关系)
接下来有m组数据a , b , c。
0<= a, b <= 1000000, 0 <= c <= 2;
输入过程中当a或b为0时表示为钱;
注意:输入中没给出的兑换关系表示不能兑换,兑换过程中物品都将全部兑换,兑换过程中不会出现循环。

Output
输出想不出来最后最多的钱数。(保留2位有效数字)(最后结果中不会超过2^31 - 1)。

Sample Input
10000 3
0 1 1.2
1 2 1.3
2 0 1.4

Sample Output
21840.00

代码: #include
#include //输入输出文件流

#include
#include

#define M 4
#define N 5

using namespace std;

double pow(double x,double y); //计算2^31的函数

int main() {

ifstream fs("d:\file.txt",ios::in|ios::out); //以写方式打开文件file.txt

while(fs.good ())

cout<<(char)fs.get (); //输出文件

fs.close ();
cout< pow(2,31); //调用pow()函数
float max; //临时储存一个值
max=pow(2,31)-1;
float n; //开始有的钱数
int m; //m组兑换关系
int i; //用于循环
cout scanf("%f%d",&n,&m); printf("n=%.0f,m=%d\n",n,m);
start: if(n>10000||m>10000) { printf("输入的数据不符合规定!\n");

printf("请重新输入n和m的值\n");

scanf("%f%d",&n,&m);

printf("n=%.0f,m=%d\n",n,m);

goto start; } else {

printf("下面请输入%d组物品名字及对应物品之间兑换关系
且关系比例大于等于1小于等于2\n",m); } if(m==4)
{ int a[N],b[N];

float w[N];

for(i=1;i<=m;i++)

{ scanf("%d",&a[i]); //存入物品名称

scanf("%d",&b[i]); //存入物品名称

scanf("%f",&w[i]); //存入物品兑换比例

}

n=n*w[1];

int j; //用于循环

float temp,temp1,temp2; //用于交换数值

temp=n; for(j=1;j { if(b[j]==a[j+2])
{
n=n*w[j+1];
temp1=n;
}
} for(j=1;j { if(b[j]==a[j+2])
{ n=temp;
n=n*w[j+2];
temp2=n;
}
}
if(temp1>=temp2)

n=temp1;

else n=temp2;
if(n<max) {

printf("%.2f\n",n); //输出赚的钱数

printf("¥¥¥¥\n");

printf("赚大钱啦!\n");

} else

{

printf("超出最大范围.\n");

",&b[i]); //存入物品名称

scanf("%f",&w[i]); }

n=n*w[1]; int j;

for(j=1;j<M-1;j++) {

if(b[j]==a[j+1])

n=n*w[j+1];

else {

break;

}

}

if(n<max)
{ printf("%.2f\n",n); //输出赚的钱数

printf("¥¥¥¥\n");

printf("赚大钱啦!\n");

}

else {

printf("超出最大范围.\n");
}

}

return 0; }