伊莉討論區

標題: 為什麼後來會變總加起來 [打印本頁]

作者: sh10523    時間: 2012-1-3 06:54 PM     標題: 為什麼後來會變總加起來

本帖最後由 goodbye_mylove 於 2012-1-3 09:20 PM 編輯

想請問各位大大我有一樣作業題目是要問題:今給一個4*4的二維陣列,請
1. 計算並輸出此陣列的所有子矩形列中具有最大元素和之子矩形陣列,以及
2.該子矩形陣列的元素和可是我打出來他卻是整個加總,要如何修改呢?
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int a[4][4];
  6. int msx1,msy1,msx2,msy2; //max sub array x1,x2,y1,y2
  7. int sx1,sx2,sy1,sy2; //sub array x1,x2,y1,y2
  8. int i,j;
  9. int b,c;
  10. int maxsum,arraysum;

  11. cout<<"輸入16個整數:";
  12. cin>>a[0][0]>>a[0][1]>>a[0][2]>>a[0][3]
  13. >>a[1][0]>>a[1][1]>>a[1][2]>>a[1][3]
  14. >>a[2][0]>>a[2][1]>>a[2][2]>>a[2][3]
  15. >>a[3][0]>>a[3][1]>>a[3][2]>>a[3][3];

  16. maxsum=a[0][0];
  17. msx1=msx2=msy1=msy2=0;
  18. for(sx1=0;sx1<4;sx1++)
  19. for(sx2=sx1;sx2<4;sx2++)
  20. for(sy1=0;sy1<4;sy1++)
  21. for(sy2=sy1;sy2<4;sy2++)
  22. {
  23. arraysum=0;
  24. for(i=sx1;i<=sx2;i++)
  25. for(j=sy1;j<=sy2;j++)
  26. arraysum+=a[i][j];
  27. if(maxsum<arraysum)
  28. {
  29. msx1=sx1;
  30. msx2=sx2;
  31. msy1=sy1;
  32. msy2=sy2;
  33. maxsum=arraysum;
  34. }
  35. }

  36. for(b=msx1;b<=msx2;b++){ //先印出4x4內容看是否正確
  37. for(c=msy1;c<=msy2;c++){
  38. cout<<" "<<a[b][c];
  39. }
  40. cout << endl;
  41. }
  42. cout<<"最大總和:"<<maxsum;

  43. system("PAUSE");
  44. return 0;
  45. }
複製代碼

作者: runeray2000    時間: 2012-1-3 08:18 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: sh10523    時間: 2012-1-4 04:08 PM

可是她給的範例答案卻是
輸入隨機16數字
0 -2 -7 0 9 2 7 0 9 2 -6 2 -4 1 -1 8 -2

0 -2 -7 0
9 2 -6 2
-4 1-4 1
-1 8 0 -2
輸出
9 2
-4 1
-1 8
Maximum sum: 15
看不懂好複雜的道理




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!