自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 关于计算机算法设计方法的思考

想成男女配对,除了最开始最容易想到的列举全部情况的方法,我们其实还可以就是如“啊哈算法”里面描述的那样,给出一个情景。这时就可以多余的人去找有伴的人,问他能不能去找自己另外的熟人。相反的是我认为这反而是设计的根本。人能思考的逻辑问题计算机一般都可以实现,重要的是如何把问题掰碎扔给计算机解决。但是我们只要能让多余的人去找有伴的人,问他能不能去找自己另。只要配对的人中有一个人能找到自己一个没人配对的可以配对的伴侣就可以了。暴力枚举其实一般人人最开始想到的也是这个,而不是计算机的独有的。关注最后配对的情况。

2024-10-01 12:40:35 130

原创 排序算法的理解

计算机不能直接继承不等式的传递性特征,这个时候才用递归调用去人为的分成不同的部分。或者说,一部分已经大致排序好的数放在一边,另外一边再排。排序算法借鉴了数学里面的不等式的思想。

2024-10-01 08:16:03 208

原创 汉诺塔的理解

一张牌的时候放在C区域,2张若第一张放B区域了,2张的第二张就是C区域了,B区域的那张牌只能放在C区域的第一张牌上面了,不然就只能按大到小给放回牌堆了,或者无意义的乱。(还可以这样解释,堆起来空起来的位置可以是要目标大盘放置的位置,只是没有物理的把盘子给交换,所以只需要调整位置即可,圆盘 A B C,C堆起来了,把B和C交换位置A C B,如果不看标记,把A的牌堆第一张牌放到大盘B上,C再借A再放一次自己的造型到B上,就是牌堆数量为n + 1的情况了)两张牌则是B区域开始,三张又是C区域开始了。

2024-09-25 17:58:01 306

原创 减少代码错误的方法

这也是看似是,而实际上,你若去举个例子很快就能发现问题。等价是需要证明的,而不是想当然的以为然就可以的。就如下面这个求割点的。

2024-09-20 14:40:30 229

原创 编程事情1

长串代码更要注意易错点(就那么几个)不要想别的事情,在打代码的时候。

2024-09-19 19:42:10 148

原创 C语言字符录入的一些问题

在这个例子中,当 i 等于 2 时,break 语句会被执行,循环会立即结束。因此,i++ 在最后一次迭代中不会被执行,但循环会在 i 等于 2 时提前终止,所以实际上 i 的最终值将是 2。

2024-08-20 08:45:27 169

原创 还是解救小哈但是bfs

但是我发现自己老早之前试验了几个很近的点(给的标准输入和输出的改动下)都是对的,我就觉的是把墙算进去了,因为按照数学归纳法的启示,这应该像多米诺骨牌一样证明正确性的,毕竟直接判断对错都是正确的,唯一特殊的可能就是比较近的地方没有墙壁。还有这提示我即使前面几个是对的最后答案是错的也有可能是从一开始就是错的。后来printf输出结果的方法才找对了问题的关键所在。这次用了之前总结的经验果然得到了很大的解决,只有。

2024-08-16 15:16:22 386

原创 注意结构和复制粘贴后的就情况修改

【代码】注意结构和复制粘贴后的就情况修改。

2024-08-15 08:44:02 83

原创 变量的注意或许需要调试

错误类型还是一样的,还是要多练。另外就是变量值这里,举例子的时候可能也只是逻辑上的,而忽视了具体的,最好把变量的值的变化写下来或者使用IDEL的debug功能。输入一个自然数N(1

2024-08-13 10:27:12 142

原创 一些错误(凑字数)

原本想减枝的,但是忽略了逻辑上就是减去所有的数的“笔画”(前期没思考完整,随随便便画一下就完了)后来边做边“优化”就出现了这样的问题。这里也是,本来是break的,就是前期规划没做好,做的的时候想不到全局,于是就以为break就对了,其实只有i 和j最开始的break是对的,这里的是continue才对,继续到后面的。等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)只有一行,表示能拼成的不同等式的数目。

2024-08-11 13:58:56 357

原创 多举例子!

由于之前的经验,我检查的时候也到while循环这里了,但就是没有检查出问题来。

2024-08-06 12:43:14 111

原创 在写代码时的一些错误(2)

由于我的设计是这样,所以和第一个和stk1.data[1]相同的数才会出现这种情况。这个操作里面的可能错误的部分(如果两个(if else)都有就不知道是谁的问题了)这里面的问题,但是我没有看出来,所以动用了printf打印结果的方式来检查错误。突然发现这里的5直接跑到栈里面了,本来收完一轮牌后是到2号线出牌了。stk1.top --导致stk1.top == 0,所以启动了。因为5是收完牌给出去的 stk.top搜索到1的位置的时候。看了这么多问题——其实都是临界值问题。放牌的顺序调整过来了后。

2024-08-04 14:58:39 308

原创 在写代码时的一些错误

我的本意就是tail放在head的后面先,再在给q1.data[head]赋值的过程中tail,然后我用i来了个等效替代,毕竟head走不开,但是我忽略了第一次head在的位置就是没有的,赋值进去的时候,这个时候tail更不需要走。这样的错误后面还有。这是正确的代码(1 1 1 1 1 1 1 1 1 1 1 1这样的例子当然会死循环 ),但是刚写出来的时候却有十分多的错误。也是忽略了第一次的空栈是要先录入的,stk1.top不需要移动。我想别的情况去了结果把这个情况——把回收的牌给放回自己牌堆的情况。

2024-08-04 14:16:35 185

原创 一个题目多用几个解法可能会领会新的东西

乍一看桶排序法去重很难,但是若是先学过桶排序法,这里试图运用桶排序法就容易些。如果想到的话一定要积累。一个题目多用几个解法,反而会更好。可以领会这个方法的其他优点。全凭名词搜索会很累的。

2024-07-29 18:26:36 107

原创 Eclipse的一些使用

The local variable XXX may not have been initialized意思是该变量没有进行初始化,解决这个错误就是赋初值。原因是if判断会阻隔。

2024-07-27 11:07:52 363

原创 做好程序前设计

这里aa[12]=a[12]-'0';即使aa[12]='X'-'0'==40;((sum - (--k)*aa[12])%11)有X的时候也根本不需要,因为for(i=0;一定一定一定要想好之后再动手!

2024-06-16 20:33:10 426

原创 如何纠错?

看起来没什么问题 但是如果自己代入3 、7就可以知道第一个满足后但是n变了,要经过第二个if判断这时就坏菜了。解决方法就是在每个括号里加上return;但是这个函数的if外面必须要有一个return 所以删掉。或者删掉后面两个if直接在输入之前对数据进行判断。

2024-06-06 20:13:19 170

原创 控制应优先

先从大体上的去找规律,然后才是数字归纳(更为详细的),同时控制关系应该优先(这里是天数和位置)。是否涉及所有对象不是广泛,如果是具体的数值就不是广泛。

2024-06-04 15:26:56 188

原创 写代码之前一定要提前想好思路

就和写数学题目一样,在做题目之前要先把思路确立下来。可能是我早年做数学的时候老是着急做题目没怎么分析过题目,把这个习惯不自觉地代入了代码的写入当中。习惯的养成使得我即使明白了自己的问题也依然会不断的犯错,看来只有刻意地提醒自己才能够消除这个坏习惯。days的判断重复了,然而此时我写了十分多的代码所以脑子累得根本分析不出来了,还有return的只有2000的没有1900的了。这都是我不做计划的恶果。这道题目看起来简单,让人觉得一上手就可以了。然而这是最大的陷阱。

2024-05-29 22:51:02 688

原创 Java数据类型细节

范围,导致在计算该乘积的那一步就发生了溢出。的最大值是2^31 - 1,那么两个接近这个值的。因此,要确保不发生这样的溢出,需要至少一个乘数是。的精度来进行,避免中间结果的溢出。这一步导致的溢出,并不会直接影响到最终存储在。之前就已经丢失了精度,这就是所谓的溢出。所能表示的最大值,此时即便最终存储到的是。类型变量,乘法操作的结果已经是错误的了。最大值的整数,它们的乘积确实会超出。但是,这里的关键点在于,如果。类型的乘法运算,然后再转换到。类型的变量中,那么仅在计算。的最大表示范围,在转换到。

2024-05-10 13:28:50 213

原创 不同语言在算法使用方面的差异(Java 、C++篇)

Java是解释型语言(尽管也有JIT编译,但与传统的编译语言相比有所不同),代码在运行时需要被解释或即时编译,这会带来额外的开销。: Java程序运行在Java虚拟机(JVM)上,JVM提供了跨平台的便利,但也带来了性能上的开销。Java中的对象包含额外的信息,如对象头、类型信息等,这会增加内存的使用。然而Java没有long long数据类型,而且Java的long类型和C++的是一样大的。由于我认为的会了是能得到结果了,所以我亲自去把题解的C++代码给改成了Java的,尽管代码和逻辑上的高度统一。

2024-04-25 16:49:42 318 1

原创 前缀和 求数列的子序列的K倍区间

(考虑到一些区间是断裂的,由(Ak + 1)% k == 1 (Ak + 1 + Ak)% k == 1想到,一种特殊的可能就是区间里面的所有数字都可以被k整除) 但是转念一想,不是所有的数都一定是k的整数倍。于是我想到了下面的一一对比的方法。这个方法的精妙之处就在于前缀和包括了之前的前缀和和下一个的数字之和(相邻的两个是这样的,如此一来,单个数字 % k == 0的就也能够被检查到了,就是把单个数组也看作了是一个区间。这格代码看起来很突兀,其实是我一开始的排列组合思考的排列组合,但是这里的是区间的。

2024-04-24 19:58:23 669

原创 《Java几个常用的处理输入的小技巧》注

/ 转换为int类型 // 或者 int num = Integer.valueOf(str).intValue();是一个字符串方法,用于按照指定的分隔符将一个字符串分割成多个子字符串,并返回包含这些子字符串的数组。一般就是“类对象.类方法”这里连续点了两个方法,意思就是先读取一行的换行符号之前的数据(换行符号虽然没有被返回但是被消除了)。下面这是为了吃掉第一行的9后面剩下的换行符号。也只有它会吞掉这一行的换行符号,并且不会把换行符号当成是一种数据。这种情况下输入的个数是确定的,后面我们将会见识到。

2024-04-17 15:45:01 288 1

原创 N长数列其子数列K倍区等不可重复问题用间二分法不可解

就向下调用因为这一层的两个数确定的center【2】,也就是a[3] == 4被传到下一个调用层级的时候是center 【2】就是这一层的左判断也就是a[2] ==3,而右判断饭还是a[4] ==5 .给定一个长度为 $N$ 的数列,A[1],A[2],...A[N],如果其中一段连续的子序列 A[i],A[i+1],...A[j](i

2024-04-15 22:16:01 424

原创 之前翻硬币问题胡思乱想的完善

因为像数学一样转化这个问题就说明它是有规律的,但是请注意到那些看可以被重写(重述)的问题是在基本的问题上进行改进的(因为这就和数学里面的“范畴论”一样,不同的问题之间之所以可以一步一步的转化就是因为它转化后的,如代数转几何是因为几何就是代数建立的基础)而算法的简化问题就是在之前的问题的认识之下(不是穷举)一一对应的结果(即使人们并未意识到),所以我们可以丝毫不怀疑的说就是要这样解决的。也许有的知识是有规律的,但是我的数学技术还是不够深,所以暂时还是不能知道其中的奥秘(或许穷不穷举都是数学问题?

2024-04-06 13:05:25 799

原创 不要“依赖”具体的例子

乍一看第一个没有什么问题,我们求得了所有巧克力最小的边长的最大公约数,然后通过第一个while循环来找到所有巧克力里面最小边所能被切割的最大边数(最大公约数是用这个长度的正方形能把所有的巧克力切割成一模一样的小部分),这样做可以从最大的切割边开始测试能不能让所有的小朋友都吃到,而且不用去管最大公约数以下的长度(应为我的check方法里会检测minSquare - 1,如果不满足要求就会继续 减 1,而且只要用 if (number > = K)进行判断就可以了)。这是依据这个例子想到的,你去试试看,。

2024-04-01 14:16:48 1398

原创 程序结构体错误会导致运行的程序是上一个

运行代码的时候发现输出和代码对不上,刚开始以为是代码有问题,导致输出紊乱。问题发现后,我改正了代码问题就消失了。我去开了个新包,发现没问题了。

2024-03-31 23:37:19 124

原创 四平方和定理问题

并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法。如果把 00 包括进去,就正好可以表示为 44 个数的平方和。要求输出 44 个非负整数,按从小到大排序,中间用空格分开。每个正整数都可以表示为至多 44 个正整数的平方和。对于一个给定的正整数,可能存在多种平方和的表示法。要求你对 44 个数排序使得 0≤a≤b≤c≤d。为什么呢,应该是太复杂了,时间复杂度果然太大了。程序输入为一个正整数 N(N

2024-03-29 20:45:44 274

原创 躲得了初一躲不过十五——之一定会遇到不会的题目只能当作第一次学之这次遇到的是暴力算法

但是需要注意的是,如果直接穷举需要四个for循环,但是你变化一下式子就可以减少它的“自由度”。但是我的研究还是起到了一定作用,我发现对于n < 4 有( n / 2 ) * ( n / 2 ) > n ,所以可以减少一部分工作,还有就是n > a * a的时候( n / a ) * ( n / a ) > n。并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法。每个正整数都可以表示为至多 44 个正整数的平方和。对于一个给定的正整数,可能存在多种平方和的表示法。

2024-03-28 23:29:03 321

原创 关于字符串的比较

if(sex.equals("男") || sex.equals("女"))= "男") || sex!当我做字符串输入题目()的时候我没有第一时间想起来。对于字符串,我们应该使用。方法来比较它们的内容。sex == "男"sex == "女"

2024-03-28 14:39:37 213

原创 不要忽视小问题

水仙花数是指:一个n位数( n23 ),它的每个位上的数字的n 次所谓的水仙花数是指:一个n位数(N23),它的每个位上的数字的n次幂之和等于它本身幂之和等于它本身。我没有在一个数字(各个位数数字提取)的循环结束后的把k和sum给清除,但是幸好我问了老师,老师指出了我的问题(没问老师的话,我将会搞到地老天荒)。根据提示,在右侧编辑器补充代码,从键盘接收2个整数a和b,输出a与b范围内的水仙花数。例如:153,370,371,407等都是水仙花数,就拿153来说,153 =1。开始你的任务吧,祝你成功!

2024-03-27 18:51:44 303

原创 票据查重查漏问题

由于我不懂这个原理,于是我把“改好”后的代码交给AI继续修改时又错误时,后面又反复试了几次,屡战屡败,此时我意识到高太多自己不会的就是在凑了,凑好了当然好,但是现在凑不好,很麻烦。每次循环都会建立新的数组a[ ],但是转念一想就算是这样的问题使得我的把所有数据存进数组a的愿景失败了,也会有最后一组a[ ]里面也有最后一行数据,于是我猜测是数组a被放在了for循环里导致的(尽管我记得好像c语言里的这样结构不会有这样的问题)。在Java中,当你定义了一个数组但没有为其赋值时,数组的元素并不会有一个默认的数值。

2024-03-26 23:27:31 581

原创 以目标为导向

为了去打蓝桥杯,我没有按照书上的去做(例子太简单),基本上没有什么作用,就是基本的罗列。我也就没有去刷那些基础的题目和积累技巧(类似c语言里面的while((c = getchar)!= '\0' ))这样的东西)但是我又必须用到这些东西了所以我就决定上网搜,肯定不止我一个人遇到了这样的问题。于是我就去搜索——果然。原文链接:https://blog.csdn.net/qq_37701443/article/details/108309490。

2024-03-25 19:33:58 160

原创 不要取和所用方法名字相同的类

奉上错误代码(上面)

2024-03-22 14:51:19 224

原创 在洛谷以及蓝桥杯

这是蓝桥杯官方比赛要求的,到时候你比赛的时候也是要这的。找到你自己的答题记录(洛谷会把你的和别人的放在一起)打开你做的题目的题目描述界面(查看编译错误原因)点击最右上角的白色方块里面的“提交记录”就可以看到自己错误的详细原因。class文件名称只能是。

2024-03-22 09:59:40 345

原创 不要把String类型和String方法混为一谈

这两个不是一个东西,但是作为新手的我只顾着去关注方法的实现而忘了两者的区别,我改变了s1但是str1是不会被改变的,它仅仅起到传递参数的作用, StringBuffer改变的不是str1,而是自己拥有的和str1一样的字符串。在于for循环下第一个if判断语句。你能发现这两快代码的区别吗?

2024-03-22 09:40:15 181

原创 翻硬币游戏的解

现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?由此可见这种根据条件选择的非此即彼的判断选择要用a > b?两行等长字符串,分别表示初始状态和要达到的目标状态,每行长度小于 10001000。数据保证一定存在至少一种方案可以从初始状态和要达到的目标状态。表示反面(是小写字母,不是零),比如可能情形是。,如果同时翻转左边的两个硬币,则变为。桌上放着排成一排的若干硬币。小明正在玩一个“翻硬币”的游戏。一个整数,表示最小操作步数。

2024-03-21 22:30:57 375

原创 终于发现了怎么把代码括起来

之前在CSDN看别人都是把代码给放进一个黑色大框里的,不知怎么搞的。点击“代码”,就得到了下面的效果图。

2024-03-14 15:43:27 126

原创 自适应,人动数据

定义一个int类型变量i,i为由浮点数变量d四舍五入后的整数类型,请将转换后的i进行输出。四舍五入之后的整数(小数点后一位>=5则进一,否则舍去)用户随机输入的浮点数。

2024-03-14 13:05:31 141

原创 Java打印基础——空格

输入两个正整数a和b,输出这两个正整数的和,差,积,商,模(若a>b则输出a-b,a/b,a%b的值反之输出b-a,b/a,b%a的值,不考虑小数,请使用int类型)可以直接" "双引号里面加空格打印空格出来。其实"\t"也是空格但是间距是固定的,很大一块。也可以用java保有的c语言的printf这样的使用功能。它们的和,差,积,商,模。每个值之间用空格隔开。

2024-03-12 20:08:23 353

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除