今天跟我的小伙伴一起研究出了这道题
题目链接:https://www.luogu.com.cn/problem/P1014
题目理解:
首先我们来理解一下题目中说的以Z字形给上表的每一项编号是怎么个编法
我们看一张图(图片来自网络)
大家可以看正方形里面的数字就知道方向是怎么走的了,实在还是不懂请看下图
代码实例:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int ans = 1;//计算的是第几项
int i = 1;//i代表的是分子也就是行数
int j = 1;//j代表的是分母也就是列数
int temp = 1;//1代表遍历的方向是向上的,0代表遍历的方向是向下的
int n = scanner.nextInt();
while(n!=ans) {//如果你没有判断到最后一项的话就继续判断,一个一个枚举的判断
if(temp==1) {//如果方向向上
if(i==1) {//判断是否到了上边缘
j++;//分母加1,像右边前进一格
temp=0;//改变方向
ans++;//判断下一项
continue;//方向改变了就要退出当前循环,进行下一次的判断
}else {//没有到上边缘
i--;//分子减1
j++;//分母加1
}
}else {
if(j==1) {//判断是否到了左边缘
i++;//分子加1,像下走一格
temp=1;//改变方向
ans++;//判断下一项
continue;//方向改变了就要退出当前循环,进行下一次的判断
}else {//没有到左边缘
i++;//分子加1
j--;//分母减1
}
}
ans++;//没有抵达边缘的判断结束后,都要加1
}
System.out.println(i+"/"+j);
scanner.close();
}
}