牛客网题目复盘

BC97 回文对称数

这道题目的难点在于一个未知位数的数,要得到他的回文数该怎么做。如果只是把回文数打印当做字符打印出来可以每次除余后输出就行(注意0不能比正数先出现)。但这道题目是要去比较回文数和原来的数是否一样,就不能只得到字符回文了,要得到数字。按自己最初想法,先得到数的位数,然后依据位数可以对除余下来的每一位数乘以10对应的幂,但这样太麻烦了。注意到一个数,回文也就是最大位和最小位中间位数互换,原数字每余下来一个,目标数字就多一个。依据这个可以写一个循环直接得到目标数字


for (i = 1; i <= n; i++)
{
	int temp = i;//i是原数字
	int sum = 0;//sum是目标数字
	while (temp)
	{
		sum *= 10;//先*10防止多*了一个10
		sum += temp % 10;
		temp /= 10;
	}

BC130 最高身高

这道题目技巧点在于存储数据避免多次循环判断。只需要找到最大的数据,所以输入一个数据就可以判断大小,然后把大的数据坐标储存下来,这样就可以直接得到坐标,不用多次循环判断。

BC131 矩形判断相等

这道题目学到了一个知识点,int main函数里return 0是结束的标志,代码中可以有多个return 0,像这个题目,当输入第二个矩形时如果判断到不相等可以直接return 0走就行了,就不会往下运行相等的情况了

BC142 扫雷

学到了一个方法,二维数组中知道一个位置,怎么遍历他四周的值,可以用双循环的方法。

BC110 x型图案

这道题目和传统输出图形题目有点不一样,如果按老方法先输出空格再输出*会很复杂,所以就要寻找其他方法,依据题意可以找到其他规律,按规律输出即可。

BC133 回形矩阵

一个挺难的题目,还是要找到图形的规律,用二维数组来做,完成赋值再输出即可,然后难点就在于怎么赋值到二维数组,观察到总共要赋值n*n次,可以以此作为循环条件,赋完值就结束。然后可以以一圈为基准,写出最外圈的赋值历程,然后通过变化变量的值就可以赋内圈的值。

BC156 数组匹配

难点在于求连续子序列的和,怎么把所有连续的子序列遍历出来。这里采用固定起始和终止点然后遍历中间值的方法,而不是按1个数的序列,2个数的序列3个,4个.....因为这样固定的值多,变化的少,就可以用循环等一些方法简单的遍历出来子序列,然后判断差值存储起始和终止位置就行了。

BC161 大吉大利 今晚吃鸡

汉诺塔问题,用函数递归就可以解决,这题目要注意不能移动多下,只能一个一个移动,所以递归函数应该是先把n-移动到c在把最后一个移动到b在把n-个移动到a最后把最后一个移动到c。要注意的是最后别忘了还要把n-1个移动到c,完成循环嵌套函数。

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值