黑马程序员技术交流社区

标题: 帮我解决下这个问题 [打印本页]

作者: 佐佑    时间: 2015-3-26 23:23
标题: 帮我解决下这个问题
1      2    3   4    5
22   23  24 25   6
21   20  19 18   7
14   15  16 17   8
13   12  11  10  9

螺旋的图形,有谁会的吗
作者: 奋斗的黑马    时间: 2015-3-26 23:44
public class test
{
  public static void main(String arg[])
{
  System.out.println("打印螺旋数组如下: ");
        Scanner input = new Scanner(System.in);
        int aa = input.nextInt();
        int jj = aa;
        test ra=new test();
        int[][] array=new int[aa][jj];
        for(int _row=0;_row<aa;_row++){
            for(int _col=0;_col<jj;_col++){
                array[_row][_col]=-1;
            }
        }
        ra.printRatateArray(array);
}
public void printRatateArray(int[][] array){
        //数组行数,列数
        int rows=array.length;
        int cols=array[0].length;
        //矩形的数量,将一条线也视为上下边重合的矩形
        int regCount=rows%2==0?rows/2:(rows+1)/2;
        //初始种子数,即最外层矩形的左上角值
        int seedNum=1;
        for(int i=0;i<regCount;i++){
            System.out.println("种子数据:"+seedNum);
            //遍历数组,填充数据
            for(int _row=0;_row<rows;_row++){
                for(int _col=0;_col<cols;_col++){
                    //矩形上边横线
                    if(_row==i&&array[_row][_col]==-1){
                        array[_row][_col]=seedNum+_col-i;
                    }
                    //矩形右边竖线
                    if(_col==(cols-i-1)&&array[_row][_col]==-1){
                        array[_row][_col]=seedNum+(rows-2*i)+(cols-2*i)-2-(rows-i-1-_row);
                    }
                    //矩形下边横线
                    if(_row==(rows-1-i)&&array[_row][_col]==-1){
                        array[_row][_col]=seedNum+(rows-2*i)+(cols-2*i)-2+(cols-i-1-_col);
                    }
                    //矩形左边竖线
                    if(_col==i&&array[_row][_col]==-1){
                        array[_row][_col]=seedNum+(rows-2*i)+(cols-2*i)-2+(cols-i*2)-1+(rows-i-1-_row);
                    }
                }
            }
            seedNum=(rows-2*i+cols-2*i)*2-4+seedNum;
        }
        //打印结果
        for(int _row=0;_row<rows;_row++){
            for(int _col=0;_col<cols;_col++){
                System.out.printf("%3d",array[_row][_col]);//用了java5的格式化输出,故该程序要在jdk5下编译
            }
            System.out.println();
        }
    }



}
作者: 黑马:二师兄    时间: 2015-3-27 21:07
有大神!
作者: l540144279    时间: 2015-3-27 21:16
有大神!围观。。。【数字君】




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2