Triangle

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Triangle {

static int[][] tria = new int[20][20];
static int maxsum=0;
static int top[] = new int[]{-1,-1};
static int slen=0;
static int maxslen=-1;
static int count=2;

public static void main(String[] args) throws FileNotFoundException {
    // TODO Auto-generated method stub
    Scanner sc = new Scanner(new File("src/file/triangle"));
    for (int i = 0; i < 20; i++) {
        for (int j = 0; j < 20; j++) {
            tria[i][j] = sc.nextInt();
        }
    }
    for (int i = 0; i < 20; i++) {
        for (int j = 0; j < 20; j++) {
            if (tria[i][j] == 1) {
                if(CacuTria(i, j)){
                    tria[i][j]=tria[i+1][j]=tria[i+1][j+1]=count;
                    int ii=i+2,jj=j+1;
                    int sum=0;
                    for(int k=ii;k<ii+slen-2;k++){
                        tria[k][jj-1]=tria[k][jj+k-ii+1]=count;
                        for(int l=jj;l<jj+k-ii+1;l++){
                            sum+=tria[k][l];
                        }
                    }
                    for(int k=j;k<=j+slen;k++){
                        tria[i+slen][k]=count;
                    }
                    if(sum>maxsum){
                        top[0]=i;
                        top[1]=j;
                        maxsum=sum;
                        maxslen=slen;
                    }
                    count++;
                }
            }
        }
    }
    System.out.println(top[0]+","+top[1]+"--"+(maxslen+1)+"--"+maxsum);
    for(int i=0;i<20;i++){
        for(int j=0;j<20;j++){
            System.out.print(tria[i][j]+" ");
        }
        System.out.println();
    }
}

private static boolean CacuTria(int x, int y) {
    // TODO Auto-generated method stub
    for (int i = 0; i < (20 - x > 20 - y ? 20 - y : 20 - x); i++) {
        if (tria[x + i][y] == 1 && tria[x + i][y + i] == 1) {
            if(i>2){
                boolean isT=true;
                for(int j=1;j<i;j++){
                    if(tria[x+i][y+j]!=1)
                        isT=false;
                }
                if(isT){
                    slen=i;
                    return isT;
                }
            }
        } else
            return false;
    }
    return false;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值