大きな行列 M と m=M/2 で最小の部分行列 m の数を見つけるのに問題があります。
最小の部分行列を見つけるために、同じループ内の部分行列の数を見つける必要があります
。これが私が行ったことです。
public static void FindSmalSubMatrix(int mat3[][],int rows,int colums)
{
int subm,i,j,temp=0,location1=0,location2=0, min=0;
ArrayList submin = new ArrayList();
if(rows>=colums)
subm=colums/2;
else
subm= rows/2;
min= Firstmin(mat3,subm);
for (i=0;i<rows-subm+1;i++)
for(j=0;j<colums-subm+1;j++)
{
for(int k=i; k <i+subm;k++)
for (int l =j;l<j+subm;l++)
{
temp=temp+ mat3[k][l];
}
if (temp <= min)
{
min=temp;
submin.add(min);
location1=i;
location2=j;
}
temp=0;
}
System.out.println(min+" location is :"+location1+" "+location2);
for( Object value:submin)
System.out.print(value);
}
そして、ここに例があります
6 6 4 4 3
2 2 3 3 8
5 0 2 2 5
4 9 2 1 4
1 6 8 1 3
7 場所は :2 2
161514977
しかし、その min =7 Location :1 1
2 3
0 2を出力する必要があります
分 =7
位置 :2 2
2 2
1 2
誰かが私を助けることができれば、私はそれを大いに感謝します。