Java洛谷P1014 Cantor表

在这里插入图片描述
今天跟我的小伙伴一起研究出了这道题

题目链接: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();
    }
}
发布了116 篇原创文章 · 获赞 38 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43290288/article/details/104393736