求最大联通子数组的和(结对开发)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求最大联通子数组的和(结对开发)相关的知识,希望对你有一定的参考价值。
结对伙伴:
纪烈翔
博客名:我们都是小怪兽
链接:http://www.cnblogs.com/qwer113/
设计思想:
1:在c++默认路径下创建input.txt
2:在txt中输入矩阵的行、列,以及对应的数
3:按列遍历,求出没列最大子数组,再求出相应结果
程序源代码
1 //返回二维整数组中最大联通子数组的和 2 //2016/4/4 3 #include<iostream> 4 using namespace std; 5 #include<fstream> 6 int zuida(int n, int a[], int *sm, int *mm); 7 8 void main() 9 { 10 int m, n, i, j, sm, mm, t2; 11 int sum, max; 12 char A[100]; 13 int up[100], down[100], t[100]; 14 int a[100][100], b[100]; 15 cout << "请输入要读入的文件名:"; 16 cin >> A; 17 ifstream infile; 18 infile.open(A, ios::in); 19 if (infile.is_open() == false) 20 { 21 cerr << "open error!" << endl; 22 exit(1); 23 } 24 //输入二维数组的行和列 25 infile >> m; 26 infile >> n; 27 for (i = 0; i<m; i++) 28 { 29 for (j = 0; j<n; j++) 30 { 31 infile>> a[i][j]; 32 } 33 } 34 //求最大和 35 for (i = 0; i<m; i++) 36 { 37 for (j = 0; j<n; j++) 38 { 39 b[j] = a[i][j]; 40 } 41 sum = zuida(n, b, &sm, &mm); 42 up[i] = sm; 43 down[i] = mm; 44 t[i] = sum; 45 46 } 47 t2 = t[0]; 48 for (i = 0; i + 1<m; i++) 49 { 50 if (up[i] <= down[i + 1] && down[i] >= up[i + 1]) 51 { 52 t2 += t[i + 1]; 53 } 54 for (j = up[i]; j<up[i + 1]; j++) 55 { 56 if (a[i + 1][j]>0) t2 += a[i + 1][j]; //判别独立正数 57 } 58 59 } 60 61 //在屏幕上输出 62 cout << "二维数组的行" << m << endl; 63 cout << "二维数组的列" << n << endl; 64 65 for (i = 0; i<m; i++) 66 { 67 for (j = 0; j<n; j++) 68 { 69 cout << a[i][j] << " "; 70 } 71 cout << endl; 72 } 73 cout <<"最大和"<< t2 << endl; 74 75 } 76 77 78 int zuida(int n, int a[], int *sm, int *mm) 79 { 80 int b[100] = { 0 }; 81 int i, sum1 = 0, max1 = 0; 82 for (i = 0; i<n; i++) 83 { 84 if (sum1<0) 85 { 86 sum1 = a[i]; 87 } 88 else 89 { 90 sum1 = sum1 + a[i]; 91 } 92 b[i] = sum1; 93 } 94 max1 = b[0]; 95 for (i = 0; i<n; i++) 96 { 97 if (max1<b[i]) 98 { 99 max1 = b[i]; 100 *mm = i; 101 } 102 } 103 for (i = *mm; i >= 0; i--) 104 { 105 if (b[i] == a[i]) 106 { 107 *sm = i; 108 break; 109 } 110 } 111 return max1; 112 }
测试用例
1:
2:
项目计划总结
时间记录日志
缺陷记录日志
以上是关于求最大联通子数组的和(结对开发)的主要内容,如果未能解决你的问题,请参考以下文章