zoukankan      html  css  js  c++  java
  • 结对编程实践扩展

    程序按照小伙伴 信1201-1班 曹坤的思路已经实现了,下面是我的思路,

    首先从二维数组第一个点a[0][0]开始,找所有可能和他组成子数组的点,记录下子数组的和,然后选择和a[0][0]挨着的点依次类推,结果就是求得所有可能情况的子数组的和;找出最大的~

    我的程序没能成功实现

    程序源代码;

    #include <iostream>
    using namespace std;
    void maxSubArray(int **,int ,int ,int []);
    int main()
    {
      int n,m;
      
      printf("请输入二维数组的行数和列数:
    ");
      scanf("%d %d",&n,&m);
      int i,j;
      int *c=new int[(m*n*(m*n-1))];
      int **a=new int*[n];
      printf("请输入%d*%d个二维数组元素:
    ",n,m);
      for(i=0;i<n;i++)
      {
        a[i]=new int[m];
    
        for(j=0;j<m;j++)
        {
          scanf("%d",&a[i][j]);
        }
      }
      maxSubArray(a,n,m,c);
      
      return 0;
    }
    void maxSubArray(int **a,int n,int m,int c[])
    {
    	int d=0;
    	int result=0;
    	for(int a1=0;a1<n;a1++) {
    		for(int b1=0;b1<m;b1++){
    			for(int a2=a1+1;a1<n;a2++){
    				for(int b2=b1+1;b2<m;b2++){
    					int sum=0;
    					for(int a3=a1;a3<=a2;a3++){
    			        	for(int b3=b1;b3<=b2;b3++){
    			        		sum+=a[a3][b3];			        							
    				         }
                        }
                        c[d]=sum;
                        d++;
    					
    				}
    			}
    			
    		}
    	}
    	for(int a4=0;a4<d;a4++){
    		if(result<c[d])
    		result=c[d];
    		
    	}
    	 printf("二维数组的最大子数组之和是:%d
    ",result);
     
    }
    

      运行截图

    可能是for循环嵌套的太多了,下去我再找找方法

  • 相关阅读:
    Ext.form.RadioGroup
    Ext:ComboBox实战
    Ext.Ajax.request
    下拉菜单
    为Ext添加下拉框和日期组件
    点击grid单元格弹出新窗口
    好用的sql
    数据库连接池总是断开
    POI 自用API
    String 操作
  • 原文地址:https://www.cnblogs.com/huazongzong/p/4357698.html
Copyright © 2011-2022 走看看