宋哥哥


私信TA

用户名:630591905

访问量:7633

签 名:

等  级
排  名 805
经  验 3565
参赛次数 3
文章发表 9
年  龄 0
在职情况 学生
学  校 迦南魔法学院
专  业

  自我简介:

解题思路:    下,右,上,左。这是一轮,一轮循环过了过后,开始下一轮的下,右,上,左

题型:模拟题

考察:while循环的使用,以及边界的判定

注意事项:用debug走一走,自己修改修改就可以了。这道题如果直接这么做,会超时的蛤,我自己运行出来是2S左右,但是题意要求1S内,所以这里使用了java里面的输入输出,大家以后直接拿来用就可以了。



参考代码:

import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {
	static OutputStreamWriter pr=new OutputStreamWriter(System.out);
	/**
	 * @param args
	 */
	static class in {
		static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		static StringTokenizer tokenizer = new StringTokenizer("");
		static String nextLine() throws IOException{// 读取下一行字符串
			return reader.readLine();
		}
		static String next() throws IOException {// 读取下一个字符串
			while (!tokenizer.hasMoreTokens()) {
				tokenizer = new StringTokenizer(reader.readLine());
			}
			return tokenizer.nextToken();
		}

		static int nextInt() throws IOException {// 读取下一个int型数值
			return Integer.parseInt(next());
		}

		static double nextDouble() throws IOException {// 读取下一个double型数值
			return Double.parseDouble(next());
		}
	}
	static int n=0,m=0;
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		 m=in.nextInt();
		 n=in.nextInt();
		int arr[][]=new int[m][n];
		for(int i=0;i<m;i++)
			for(int j=0;j<n;j++){
				arr[i][j]=in.nextInt();
			}
		
		int i=0,j=0;//这是起点
		int dp[][]=new int[m][n];//存放状态
		dp[0][0]=1;
		System.out.print(arr[0][0]+" ");
		int cur=1;//走过的步数,一共n*m步
		while(cur!=n*m){
			while(i+1<m&&dp[i+1][j]==0){//向下走
				i++;
				pr.write(arr[i][j]+" ");
				cur++;
				dp[i][j]=1;
				
			}
			while(j+1<n&&dp[i][j+1]==0){//向右走
				j++;
				pr.write(arr[i][j]+" ");
				cur++;
				dp[i][j]=1;
				
			}
			while(i>=1&&dp[i-1][j]==0){//向上走
				i--;
				pr.write(arr[i][j]+" ");
				cur++;
				dp[i][j]=1;
			}
			while(j>=1&&dp[i][j-1]==0){
				j--;
				pr.write(arr[i][j]+" ");
				cur++;
				dp[i][j]=1;
			}
		}
			pr.flush();
			
			
	}

}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区