jeudi 23 juin 2016

array value not shown as expected

At a[2][2] position of array value should be -5 according to following input

1
3
3
-2 -3 3
-5 -10 1
10 30 -5

but when I run this code, it shows value at a[2][2] as 0 no idea why. I am sure that i have not updated values in array.

#include<stdio.h>
#include<limits.h>
#include<string.h>
#include<math.h>
#define min(a,b) a<b?a:b

int m,n;
int func(int i,int j,int a[][101],int dp[][101])
{
 if(i>=m||j>=n)
{
    printf("i=%d j=%d intmaxn",i,j);
    return INT_MAX;
}
if(i==m-1&&j==n-1)
{

    if(a[i][j]<0)
    {
        printf("i=%d j=%d return abs a[i][j]%dn",i,j,abs(a[i][j]));
        return abs(a[i][j]);
    }
    printf("i=%d j=%d a[i][j]=%d return 0n",i,j,a[i][j]);
    return 0;
}
if(dp[i][j]!=-1)
{
    printf("returning dp=%dn",dp[i][j]);
    return dp[i][j];
}
int t1=func(i+1,j,a,dp);
int t2=func(i,j+1,a,dp);
t1=min(t1,t2);
if(a[i][j]<0)
{
    dp[i][j]=t1+abs(a[i][j]);
}
else
{
    t1=t1-a[i][j];

    dp[i][j]=(t1>0?t1:0);
}
printf("t1=%d  i=%d j=%d dp=%dn",t1,i,j,dp[i][j]);
return dp[i][j];
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
    int dp[101][101];
    scanf("%d%d",&m,&n);
    int i,j,a[m][n];

    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&a[i][j]);
            dp[i][j]=-1;
        }
    }
    //for(i=0;i<m;i++)
    //for(j=0;j<n;j++)
    //printf("%d ",a[i][j]);
    printf("%dn",func(0,0,a,dp)+1);
}
return 0;
}

Aucun commentaire:

Enregistrer un commentaire