×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: C
Posted by: Damian Pytkowski
Added: Sep 8, 2016 9:17 AM
Views: 9
v1.2
-mozliwosc swobodnego dodawania z ctrl+z
-wielkosc tab 50
  1. #include<stdio.h>
  2.  
  3. int num_of_bit_required(int n)
  4. {
  5.         int i=1,count=0;
  6.         while(i<=n)
  7.         {
  8.                 i=i<<1;
  9.                 count++;}
  10.  
  11.         return count;
  12. }
  13.  
  14. int Pow(int TWO,int M)
  15. {
  16.                 int Product=1,i;
  17.                 for(i=0;i<M;i++)
  18.                 {
  19.                 Product=Product * TWO;}
  20.  
  21.                 return Product;
  22.  
  23. }
  24.  
  25. int main()
  26. {
  27.        
  28.                 int i,N=0,No_of_subarray,nobr,FLAG=1,flag2=1,flag3=1,j=0,KEY,prs,m=0,n;
  29.                 int sum=0,ARR[50],min,tab[50];
  30.                 printf("Wpisz wartosci itemow:\n");
  31.                 while(scanf("%d", &ARR[N])==1)
  32.                 {
  33.                         N++;
  34.                         fflush(stdin);
  35.                         }
  36.                 printf("Wpisz cene: ");fflush(stdin);
  37.                 scanf("%d",&prs);
  38.                 printf("\n");
  39.                 No_of_subarray=(Pow(2,N)-1);
  40.                 nobr = num_of_bit_required(No_of_subarray);
  41.                
  42.                 for(KEY=0;KEY<=No_of_subarray;KEY++)
  43.                 {
  44.                         j=0;
  45.                         FLAG=1;
  46.                         while(j<nobr)
  47.                         {
  48.                                 if((FLAG & KEY) != 0){
  49.                                         sum= sum+ARR[(nobr-1)-j];
  50.                                         tab[m]=ARR[(nobr-1)-j];
  51.                                         m++;
  52.                                         n=m;
  53.                                         }
  54.                                 FLAG = FLAG << 1;
  55.                                 j++;
  56.  
  57.                         }
  58.                        
  59.                         if(sum>=prs)
  60.                         {
  61.                                 if(flag2){
  62.                                         min=sum;
  63.                                         flag2=0;
  64.                                 }      
  65.                                 if(sum<=min){
  66.                                         for(m=0;m<n;m++)
  67.                                                 printf("%d ",tab[m]);
  68.                                         printf("\t%d\n",sum);
  69.                                         min=sum-1;
  70.                                         flag3=0;
  71.                                 }
  72.                         }
  73.                         sum=0;
  74.                         n=0,m=0;
  75.                 }
  76.                 getch();
  77.                 return 0;
  78.  
  79. }