Advertisement
Guest User

Untitled

a guest
Mar 24th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.39 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. struct maquina{
  6. double prob;
  7. int custo;
  8. };
  9.  
  10. double result[400][1000];
  11. struct maquina lista[1024];
  12. int dinheiro;
  13. int maquinas;
  14.  
  15. double max(){
  16. int i,j;
  17. for(i=0;i<dinheiro;i++){
  18. result[0][i] = 1;
  19.  
  20. }
  21. double var = 0;
  22. for(i=1;i<=maquinas;i++){
  23. for(j=1;j<=dinheiro;j++){
  24.  
  25. result[i][j] =0;
  26.  
  27. int k,u=100;
  28. double s =1,z;
  29. if(i==0){
  30. }else if(i==1 && j<lista[i-1].custo){
  31. }else if(i==1 && j==lista[i-1].custo){
  32. result[i][j] = lista[i-1].prob;
  33. }else if(j==1){
  34. if(lista[i-1].prob > result[i-1][j]){
  35. result[i][j] = lista[i-1].prob;
  36. }else{
  37. result[i][j] = result[i-1][j];
  38. }
  39. }else {
  40. int maxmaq = dinheiro/lista[i-1].custo;
  41. for(k=0;k<=j;k++){
  42.  
  43. s *= 1 - lista[i-1].prob;
  44.  
  45. u = k*lista[i-1].custo;
  46.  
  47. z = result[i-1][j-u];
  48.  
  49. var = (1-s)*z;
  50.  
  51. if(var>result[i][j]){
  52. result[i][j] = var;
  53.  
  54. } else {
  55. printf("\nresult = %.12lf var = %.12lf\n",result[i][j], var);
  56. }
  57. }
  58. }
  59. }
  60. }
  61. return result[maquinas][dinheiro];
  62. }
  63.  
  64.  
  65.  
  66. /*
  67. double max(int i, int w){
  68. int teste = w,h;
  69. double sem=0,com,t=1;
  70. if(w==0){
  71. return 0;
  72. } else if(i==0){
  73. return 1;
  74. } else if(i==1){
  75. while(teste >= lista[i-1].custo){
  76. t = t * (1 - lista[i-1].prob);
  77. teste -= lista[i-1].custo;
  78. }
  79. t = 1 - t;
  80. return t;
  81. } else {
  82. if(w == 1){
  83. if(lista[i-1].prob > result[i][w]){
  84. sem = lista[i-1].prob;
  85. printf("\n sem = lista.prob = %.12f\n",sem);
  86. } else{
  87. sem = result[i][w];
  88. printf("\n sem = result[i][w] = %.12f\n",sem);
  89. }
  90. return sem;
  91. }
  92.  
  93. while(teste >= lista[i-1].custo){
  94. t = t * (1 - lista[i-1].prob);
  95. teste -= lista[i-1].custo;
  96. }
  97. t = 1 - t;
  98. sem = result[i][w];
  99. for(h=1;h<w;h++){
  100.  
  101. /*while(teste >= lista[i-1].custo){
  102. t = t * (1 - lista[i-1].prob);
  103. teste -= lista[i-1].custo;
  104. }
  105. t = 1 - t;
  106.  
  107. t = result[i][h] * result[i-1][w-h];
  108.  
  109. if(t > com){
  110. com = t;
  111. }
  112. }
  113. if(sem > com){
  114. printf("VOU RETORNAR SEM = %f\n",sem);
  115. return sem;
  116. } else {
  117. printf("VOU RETORNAR COM = %f\n",com);
  118. return com;
  119. }
  120. }
  121. }
  122. */
  123. int main(void) {
  124. //inputs
  125. int i,w;
  126. scanf("%d",&maquinas);
  127.  
  128. for(i = 0;i<maquinas;i++){
  129. scanf("%lf %d",&lista[i].prob,&lista[i].custo);
  130. }
  131.  
  132. scanf("%d",&dinheiro);
  133.  
  134. //codigo
  135. int a,j;
  136. double f = max();
  137.  
  138. for(i = 0;i<maquinas;i++){
  139. printf("linha %d:",i);
  140. for( j=0;j<dinheiro;j++){
  141. printf(" %lf,",result[i][j]);
  142. }
  143. printf("\n");
  144. }
  145.  
  146. //outputs
  147. printf("%.12f",f);
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement