秃头日记:Cantor表,包看包会!超详细!小白简单易懂!无难懂思维!保姆级教学!妈妈再也不用担心你不会Cantor表了

前言

相信许多人在学习中都做过Cantor表(我第一次做是被狠狠的折磨了),做不会的时候相信大家都回去看看题解。但发现,劳资蜀道山!题解全是佬!!!小白只能流泪……

超详细思路以及图解

所以今天,我通过我聪明的大脑(小白被拷打的经历),总结出自我认为超详细的题解!!!

废话不多说,开始看题

相信许多小白看到这题,第一眼便是懵逼??我在哪?我应该干什么?这些标号是怎么来的??(我第一次做也是这样)

我知道你很急,但你先别急,这题是道模拟题,这张表另有玄机,来随我一看。

我们将这张表旋转一下(你也可以歪头)

有了这张图片,我们就能发现一些规律了(蓝色代表层数,绿色代表下标

我们现在将这些数字重新排列一下,以便我们看的更加舒适。(蓝色代表层数,绿色代表下标

规律:1.第1层分子加分母的和为2,第2层分子加分母和为3,第3层和为4………我们可以发现,每一层的分子与分母的和等于这一层的层数加上一。

便可以得到一个公式       i+j=n+1(i代表分母,j代表分子,n代表层数)

规律;2.第2层分子递增,分母递减。

       第3层分子递减,分母递增。

       第4层分子递增,分母递减。

       第5层分子递减,分母递增。

便可看出偶数层的分子在递增,分母递减。奇数层分子递减,分母递增。

规律:3.每一层元素的个数等于该层的层数。

规律;4.偶数层分子从1开始递增,分子=列数。奇数层分母从1开始递增,分母=列数

我们已经知道了规律,我们还有最重要一个问题要解决,那就是如何找到我们要寻找的那个数。

求层数:由于每一层的数字数量相较于上一层都是加1的,并且都是连续的
所以我们可以通过求层数中元素个数的数量和来寻找目标元素所在的层数,
如果相加的和大于等于下标的话,我们要寻找的那个元素便在最后相加的那一层。

例如,我们要寻找下标为7的元素,第一层数字数量为1,第二层为2,第三层为3,第四层为4。

1<7   1+2=3<7    1+2+3=6<7     1+2+3+4=10>7  ,所以我们可以得到,下标为7的元素在第四层。

那我们知道了它层数,怎么知道它所在的该层的哪个位置呢?

求列数:因为目标元素是在最后相加的那一层,前面所有层中的元素都和它没关系。
所以可以用它的下标减去前面所有层数中元素的个数便可以得到它所在该层的位置。

例如  7-6 =1  所以下标为7的元素所在的位置为第四层的第一列。

知道了这些,我们就可以编写出ac的代码了

代码实现附加超详细注释

#include<iostream>
using namespace std;
int main()
{
	int h = 0;///h代表层数
	int k = 0;///表示我们要寻找的数字在第h层第k列。
	int n; cin >> n;///n表示我们要寻找的数字的下标。
	int sum = 0;///sum表示前。

	///求数的位置
	for (int i = 1;; i++)///这里i不需要判断条件,++即可。
	{
		sum += i;///一直求和,直到sum大于我们所要寻找数的下标。
		if (sum >= n)
		{
			h = i;///得到层数
			sum -= i;///注意这里要减的原因,这里的i是包含了第h行在内的。
			         ///而我们所要求的是前h-1行所有元素的和
			         ///由于我们的每一层元素的个数是等于其层数的,所以我们只需要减去i即可。
			k = n - sum;///求出我们的列数
			break;///注意要跳出循环
		}
	}
	///判断奇偶
	if (h % 2 == 0)///偶数
	{
		cout << k<<'/' << (h + 1 - k);///根据规律4得知分子等于列数
		                              ///即分子=k
		                              ///再结合公式i+j=n+1,即j=n+1-i可求出分母
	}
	else
	{
		cout << (h + 1 - k) << '/' << k;///有规律②便可得到,将奇数层看成偶数层逆序就可以了
		                               ///也就是偶数层的表达式中的(h+1-k)和k交换顺序
	}
	return 0;
}

总结

个人见解,有不同的见解或者意见欢迎评论区指出。博主也是编程小白,希望能够与大家共同进步大家。

能明白大家在做题的时候会遇到很多困难,一题几个小时,看一题一题不会,甚至怀疑自己笨,认为自己不适合这个专业,但是没关系,你要树立自信心,相信自己!

采花贼会与你们一起学习,一起进步。如果这篇博客对你们有用的话,记得给采花贼点个赞或者点个关注,是对博主最大的鼓励。

只要花不谢,采花贼会一直在!!!我们下期再见!!!

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值