- int ans;
- int equal_sum(int N, int *P[MAXSIZE][MAXSIZE], int S, int number[MAXSIZE][MAXSIZE]);
- int checkrow(int row,int N,int number[MAXSIZE][MAXSIZE])
- {
- int sumrow, i ;
- for (i=0,sumrow=0;i<N;i++)
- sumrow+=number[row][i];
- return sumrow;
- }
- int checkcolumn(int row,int column,int number[MAXSIZE][MAXSIZE])
- {
- int sumcolumn,i;
- for (i=0,sumcolumn=0;i<=row;i++)
- sumcolumn+=number[i][column];
- return sumcolumn;
- }
- int COUNT(int *P[MAXSIZE][MAXSIZE], int N)
- {
- int i, j, k;
- for (i=0;i<N;i++)
- {
- for(j=0;j<N;j++)
- {
- for(k=1;;k++)
- if(*(P[i][j]+k)==0) count[i][j]=k;
- }
- }
- }
- int search(int *P[MAXSIZE][MAXSIZE],int S,int N,int row,int column,int number[MAXSIZE][MAXSIZE])
- {
- int i;
- COUNT(P,N);
- if(ans==0)
- {
- for (i=0;i<count[row][column];i++)
- {
- number[row][column]=*(P[row][column]+i);
- if (row==(N-1))
- {
- if (checkcolumn(row,column,number)==S)
- {
- if (column==(N-1))
- {
- if (checkrow(row,N,number)==S)
- {
- ans=1;
- return 1;
- }
- else
- {
- ans=1;
- return 0;
- }
- }
- else search(P,S,N,row,column+1,number);
- }
- else
- {
- continue;
- }
- }
- else if (checkcolumn(row,column,number)<=S)
- {
- if (column==(N-1))
- {
- if (checkrow(row,N,number)==S)
- search(P,S,N,row+1,0,number);
- else
- {
- continue;
- }
- }
- else search(P,S,N,row,column+1,number);
- }
- else
- {
- continue;
- }
- }
- }
- }
- int equal_sum(int N, int *P[MAXSIZE][MAXSIZE], int S, int number[MAXSIZE][MAXSIZE])
- {
- ans=0;
- if (search(P,S,N,0,0,number)==1){return 1;}
- else return 0;
- }
Raw Paste