Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 21994

Why c++ program generating different output for the same input?

$
0
0

I am implementing matrix chain multiplication program in c++. I am using ONLINE_JUDGE flag to write output to the file. When i run the program it does not produce correct output in file, but it is producing correct output in console.
My Program:

#include<bits/stdc++.h>using namespace std;int main(){    #ifndef ONLINE_JUDGE         // For getting input from input.txt file         freopen("C:\\Users\\Rahul kumar\\desktop\\Algorithm\\input.txt", "r", stdin);         // Printing the Output to output.txt file         freopen("C:\\Users\\Rahul kumar\\desktop\\Algorithm\\output.txt", "w", stdout);     #endif     // dimension of four matrices    vector<pair<int,int>>matrices;    matrices.push_back(make_pair(5,4));    matrices.push_back(make_pair(4,6));    matrices.push_back(make_pair(6,2));    matrices.push_back(make_pair(2,7));    vector<int>p; // algorithm helper data    int last; // column of last matrix.     for(auto matrix:matrices){        p.push_back(matrix.first);        last=matrix.second;    }        p.push_back(last);  // add last matrix.     int numberOfMatrix=matrices.size();    int dp[numberOfMatrix][numberOfMatrix];    for(int i=0;i<numberOfMatrix;i++){        for(int j=0;j<numberOfMatrix;j++){            dp[i][j]=0;        }    }    for(int i=0;i<numberOfMatrix;i++){        for(int j=0;j<numberOfMatrix;j++){            if(i==j){                dp[i][j]=0;            }else if(j==i+1){                dp[i][j]=p[i]*p[i+1]*p[i+2];            }else{                int best=5000;                for(int k=i;k<j;k++){                    printf("dp[%d][%d]=%d, dp[%d][%d]=%d, p[%d]=%d, p[%d]=%d, p[%d]=%d\n",i,k,dp[i][k],k+1,j,dp[k+1][j],i,p[i],k+1,p[k+1],j+1,p[j+1]);                    best=min(best,dp[i][k]+dp[k+1][j]+p[i]*p[k+1]*p[j+1]);                    cout<<"I: "<<i<<" J:  "<<j<<" Best: "<<best<<endl;                }                dp[i][j]=best;            }        }    }    for(int i=0;i<numberOfMatrix;i++){        for(int j=0;j<numberOfMatrix;j++){            cout<<dp[i][j]<<"";        }        cout<<endl;    }    return 0;}

OUTPUT in output.txt file:

I: 0 J:  2 Best: 40I: 0 J:  2 Best: 40I: 0 J:  3 Best: 140I: 0 J:  3 Best: 140I: 0 J:  3 Best: 110I: 1 J:  3 Best: 168I: 1 J:  3 Best: 1040   120   40   110   5000   0   48   104   5000   5000   0   84   5000   5000   5000   0   dp[0][0]=0, dp[1][2]=0, p[0]=5, p[1]=4, p[3]=2dp[0][1]=120, dp[2][2]=0, p[0]=5, p[2]=6, p[3]=2dp[0][0]=0, dp[1][3]=0, p[0]=5, p[1]=4, p[4]=7dp[0][1]=120, dp[2][3]=0, p[0]=5, p[2]=6, p[4]=7dp[0][2]=40, dp[3][3]=0, p[0]=5, p[3]=2, p[4]=7dp[1][1]=0, dp[2][3]=0, p[1]=4, p[2]=6, p[4]=7dp[1][2]=48, dp[3][3]=0, p[1]=4, p[3]=2, p[4]=7

Not expected output.
When i comment this code

#ifndef ONLINE_JUDGE         // For getting input from input.txt file         freopen("C:\\Users\\Rahul kumar\\desktop\\Algorithm\\input.txt", "r", stdin);         // Printing the Output to output.txt file         freopen("C:\\Users\\Rahul kumar\\desktop\\Algorithm\\output.txt", "w", stdout);     #endif 

and run the program then the output on the console is..

dp[0][0]=0, dp[1][2]=0, p[0]=5, p[1]=4, p[3]=2I: 0 J:  2 Best: 40dp[0][1]=120, dp[2][2]=0, p[0]=5, p[2]=6, p[3]=2I: 0 J:  2 Best: 40dp[0][0]=0, dp[1][3]=0, p[0]=5, p[1]=4, p[4]=7I: 0 J:  3 Best: 140dp[0][1]=120, dp[2][3]=0, p[0]=5, p[2]=6, p[4]=7I: 0 J:  3 Best: 140dp[0][2]=40, dp[3][3]=0, p[0]=5, p[3]=2, p[4]=7I: 0 J:  3 Best: 110dp[1][1]=0, dp[2][3]=0, p[1]=4, p[2]=6, p[4]=7I: 1 J:  3 Best: 168dp[1][2]=48, dp[3][3]=0, p[1]=4, p[3]=2, p[4]=7I: 1 J:  3 Best: 1040   120   40   1105000   0   48   1045000   5000   0   845000   5000   5000   0I: 1 J:  3 Best: 1040   120   40   1105000   0   48   1045000   5000   0   845000   5000   5000   0

This output is expected, but different form output of the file. This happens many times with me. I am running this program on vs code.


Viewing all articles
Browse latest Browse all 21994

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>