Advertisement
alvaro_93

Closest Sum

Apr 2nd, 2015
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 1000
  4.  
  5. /*
  6. *
  7. */
  8. int llenarArreglo(int setsum[MAX],int* n){
  9. int i;
  10.  
  11. scanf("%d",&(*n));
  12. if ((*n)==0)return 1;
  13. else{
  14. for(i=0;i<(*n);i++)scanf("%d",&setsum[i]);
  15. return 0;
  16. }
  17. }
  18.  
  19.  
  20. int hallaSuma(int arr[MAX],int nelem,int targ){
  21. int i,j,mi,mj,menor,temp;
  22. for(i=0;i<nelem-1;i++){
  23. for(j=i+1;j<nelem;j++){
  24. if(arr[i]+arr[j]>targ)temp=arr[i]+arr[j]-targ;
  25. else temp=targ-(arr[i]+arr[j]);
  26. if(!(i==0 && j==1)){
  27. if (temp<menor){
  28. menor=temp;
  29. mi=i;
  30. mj=j;
  31. }
  32. }
  33. else {
  34. menor=temp;
  35. mi=i;
  36. mj=j;
  37. }
  38. }
  39. }
  40. return (arr[mi]+arr[mj]);
  41.  
  42. }
  43.  
  44. int main(int argc, char** argv)
  45. {
  46. int setnum[MAX];
  47. int n,m,i,target,caso,clsum;
  48. caso=1;
  49. while(1){
  50. if (llenarArreglo(setnum,&n))break;
  51.  
  52.  
  53. scanf("%d",&m);
  54. printf("Case %d:\n",caso);
  55. caso++;
  56. for(i=1;i<=m;i++){
  57. scanf("%d",&target);
  58. clsum=hallaSuma(setnum,n,target);
  59. printf("Closest sum to %d is %d.\n",target,clsum);
  60. }
  61. }
  62. return (EXIT_SUCCESS);
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement