程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 體驗結對開發的樂趣2(二位數組求和最大的子數組),結對數組

體驗結對開發的樂趣2(二位數組求和最大的子數組),結對數組

編輯:關於C語言

體驗結對開發的樂趣2(二位數組求和最大的子數組),結對數組


一、隊員:

信1201-2班高揚、信1201-1班韓雪東

二、題目要求

這次比上一次增加了一些難度,改為二維數組求和最大的子數組。

三、設計思想

上一次實現的一位數組的,然後就想把二維數組轉化為一維數組來做,首先解決第一行的最大子數組問題,方法就和上次一樣了,然後第二行,然後第一行和第二行的相加求出兩行的,然後分別存放在三個一維數組裡,然後對這三個數組裡求最大的值。

四、源代碼

  1 // erweishuzuqiuzuida.cpp : Defines the entry point for the console application.
  2 //信1201-2班高揚、信1201-1班韓雪東
  3 
  4 #include "stdafx.h"
  5 #include "fstream.h"
  6 #include "iostream.h"
  7 #include "stdio.h"
  8 
  9 #define MAXSIZE 50
 10 
 11 
 12 void read(int array[][MAXSIZE],int &len1,int &len2)//讀取文件信息,並寫入數組
 13 {
 14     ifstream infile("array.txt");
 15     if(!infile)
 16         cout<<"讀取失敗!"<<endl;
 17     else
 18     {
 19         infile>>len1>>len2;
 20         for(int i=0;i<len1;i++)
 21         {
 22             for(int j=0;j<len2;j++)
 23             {
 24                 infile>>array[i][j];
 25             }
 26         }
 27     }
 28 }
 29 void display(int array[][MAXSIZE],int len1,int len2,int size1,int size2)//顯示數組信息
 30 {
 31     for(int i=len1;i<=size1;i++)
 32     {
 33         for(int j=len2;j<=size2;j++)
 34         {
 35             cout<<array[i][j]<<"\t";
 36         }
 37         cout<<endl;
 38     }
 39 }
 40 int * shuchu(int m[],int szcdx,int xhy)//m[]表示要測試的數組,szchx表示數組長度,xhy表示循環條件
 41 {
 42     int t,p;
 43     int max,sum;
 44     //緩存數組賦值
 45     int c[10000];
 46     int v[10000];
 47     int o=2*szcdx;
 48     int * temp= new int[o];
 49 
 50     for(t=szcdx-xhy-1;t<szcdx;t++)
 51     {
 52         c[t-szcdx+xhy+1]=m[t];
 53     }
 54     //循環
 55     for(t=xhy;t>=0;t--)
 56     {
 57         sum=0;
 58         for(p=0;p<=t;p++)
 59         {
 60             sum=sum+c[p];
 61         }
 62         v[t]=sum;
 63     }
 64     //循環輸出最大值
 65     max=v[0];
 66     for(t=0;t<xhy+1;t++)
 67     {
 68         if(max<=v[t])
 69         {
 70             max=v[t];
 71         }
 72         //printf("%d  ",v[t]);
 73         temp[t]=v[t];
 74     }
 75     return temp;
 76 }
 77 int maxs(int s[],int length)//輸出最大值
 78 {
 79     int d=s[0];
 80     for(int f=0;f<length;f++)
 81     {
 82         if(d<=s[f])
 83         {
 84             d=s[f];
 85         }
 86     }
 87     return d;    
 88 }
 89 int main(int argc, char* argv[])
 90 {
 91     int len1,len2;
 92     int x[3];
 93     int y[3];
 94     int *k;
 95     int *l;
 96     int array[MAXSIZE][MAXSIZE];
 97     read(array,len1,len2);
 98     cout<<"矩陣:"<<endl;
 99     display(array,0,0,len1-1,len2-1);
100 
101 
102 
103     for(int i=0;i<3;i++)
104     {
105         x[i]=array[0][i];
106 
107     }
108     int e=3;
109     int w[6];
110     int u[6];
111     int q=0;
112     printf("數組第一行子數組的和:");
113     for(i=2;i>=0;i--)
114     {
115         
116         k=shuchu(x,3,i);
117         for(int r=0;r<e;r++)
118         {
119             
120             w[q]=k[r];
121             printf("%d  ",w[q]);
122             q++;
123         }
124         e--;    
125     }
126     for(int j=0;j<3;j++)
127     {
128         y[j]=array[1][j];
129     }
130     printf("\n");
131     e=3;
132     q=0;
133     printf("數組第二行子數組的和:");
134     for(i=2;i>=0;i--)
135     {
136         
137         l=shuchu(y,3,i);
138         for(int r=0;r<e;r++)
139         {
140             
141             u[q]=l[r];
142             printf("%d  ",u[q]);
143             q++;
144         }
145         e--;    
146     }
147 
148 
149     printf("\n");
150     int h[6];
151     printf("數組包含兩行的子數組的和:");
152     for(int m=0;m<6;m++)
153     {
154         h[m]=w[m]+u[m];
155         printf("%d  ",h[m]);
156     }
157     
158 
159     int k1=maxs(w,6);
160     int k2=maxs(u,6);
161     int k3=maxs(h,6);
162 
163     int maxx=k1;
164     if(maxx<=k2)
165     {
166         maxx=k2;
167     }
168     if(maxx<=k3)
169     {
170         maxx=k3;
171     }
172     printf("\n最大和%d\n",maxx);
173     return 0;
174 }

五、運算結果截圖

 

五、心得體會

這一次實驗比上一次增加了一點難度,上一次的邏輯思想就夠混亂的了,這一次在調用上一次的函數的時候就出了邏輯的問題,然後在讀文件的時候還出了問題。這次大部分的功勞都是隊友出的,尤其在邏輯推理上,尤其的比我想的多,感謝有這麼一個好隊友,感謝高揚。

六、結對開發照

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved