字符串遍历算法(斜角遍历)
有如下二维字符串(4X5):
float[][] a= {
{1, 2, 3, 4, 5},
{3, 1, 4, 7, 6},
{5, 7, 9,11,13},
{-3,-7,15,11,23}
};
按斜角方向遍历所有元素,要求遍历次数不大于n
package Unit_3;
import java.math.*;
import java.util.*;
public class Array_xiebianli {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
BigInteger a=BigInteger.valueOf(2000000000);
BigInteger b=a.multiply(BigInteger.valueOf(2000000000));
BigInteger c=b.multiply(BigInteger.valueOf(2000000000));
BigInteger d=b.multiply(c);
String aa="123";
String bb=aa;
aa="234";
*/
int m=4,n=5;
float[][] a= {
{1,2,3,4,5},
{3,1,4,7,6},
{5,7,9,11,13},
{-3,-7,15,11,23}
};
int z=0;
int i=0,j=0,k=0;
while(true) {
System.out.println(a[i][j]);
z+=1;
if(!(j<=0||j>=0&&i>=m-1)) {
k+=1;
i+=1;
j-=1;
}
else {
if(j+k+1<=n-1) {
j=j+k+1;
i-=k;
k=0;
}
else if((j+k+1>n-1)&&i<=m-1) {
if(i==m-1&&j==n-1) break;
i=i-k+1;
j=n-1;
k=0;
}
}
}
System.out.println("查找次数:"+z);
}
}