CPP   26
equal sum
Guest on 20th September 2023 12:11:58 AM


  1. int ans;
  2.  
  3. int equal_sum(int N, int *P[MAXSIZE][MAXSIZE], int S, int number[MAXSIZE][MAXSIZE]);
  4.  
  5. int checkrow(int row,int N,int number[MAXSIZE][MAXSIZE])
  6. {
  7.            int sumrow, i ;
  8.            for (i=0,sumrow=0;i<N;i++)
  9.                 sumrow+=number[row][i];
  10.            return sumrow;
  11. }
  12.  
  13. int checkcolumn(int row,int column,int number[MAXSIZE][MAXSIZE])
  14. {
  15.             int sumcolumn,i;
  16.             for (i=0,sumcolumn=0;i<=row;i++)
  17.                  sumcolumn+=number[i][column];
  18.             return sumcolumn;
  19. }
  20.  
  21. int COUNT(int *P[MAXSIZE][MAXSIZE], int N)
  22. {
  23.             int i, j, k;
  24.             for (i=0;i<N;i++)
  25.             {
  26.                 for(j=0;j<N;j++)
  27.                 {
  28.                     for(k=1;;k++)
  29.                         if(*(P[i][j]+k)==0) count[i][j]=k;
  30.                 }
  31.             }
  32. }
  33.  
  34. int search(int *P[MAXSIZE][MAXSIZE],int S,int N,int row,int column,int number[MAXSIZE][MAXSIZE])
  35. {
  36.    int i;
  37.    COUNT(P,N);
  38.    if(ans==0)
  39.    {
  40.          for (i=0;i<count[row][column];i++)
  41.          {
  42.              number[row][column]=*(P[row][column]+i);
  43.              if (row==(N-1))
  44.              {
  45.                     if (checkcolumn(row,column,number)==S)
  46.                     {
  47.                           if (column==(N-1))
  48.                           {
  49.                                  if (checkrow(row,N,number)==S)
  50.                                  {
  51.                                            ans=1;
  52.                                            return 1;
  53.                                  }
  54.                                  else
  55.                                  {
  56.                                     ans=1;
  57.                                      return 0;
  58.                                  }
  59.                           }                      
  60.                           else search(P,S,N,row,column+1,number);
  61.                     }
  62.                     else
  63.                     {
  64.                          continue;
  65.                     }
  66.              }
  67.              else if (checkcolumn(row,column,number)<=S)
  68.              {
  69.                      if (column==(N-1))
  70.                      {
  71.                            if (checkrow(row,N,number)==S)
  72.                                   search(P,S,N,row+1,0,number);
  73.                            else
  74.                            {
  75.                                 continue;
  76.                            }
  77.                      }
  78.                      else search(P,S,N,row,column+1,number);
  79.              }
  80.              else
  81.              {
  82.                   continue;
  83.              }
  84.          }
  85.          
  86.     }
  87. }
  88.  
  89. int equal_sum(int N, int *P[MAXSIZE][MAXSIZE], int S, int number[MAXSIZE][MAXSIZE])
  90. {
  91.     ans=0;
  92.     if (search(P,S,N,0,0,number)==1){return 1;}
  93.     else return 0;
  94. }

Raw Paste

Login or Register to edit or fork this paste. It's free.