自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机编程无法准确找到全部报错

编译器有时候报出的错误原因是因为结构体的问题,但是显示的确实另外一个问题。比如java里面你把构造器的大括号范围搞大了,它就可能会一直说public ......的前缀有问题,然而事实不是这样的。有的时候我们应该放下对报错的依赖,亲自去检擦代码。

2024-04-27 12:55:43 31

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

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

2024-04-25 16:49:42 175

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

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

2024-04-24 19:58:23 635

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

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

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

原创 算法与数学

无论你怎么思考,只要你思考了事物之间的关系和数字那你就算不学数学,自己闭门造车发明新的符号,最终也会和数学不期而遇。就如同哲学一般,数学已经是人类自身对几乎所有的可能性的思考。对算法的更新也离不开数学和数学产生的一大堆优化学科。就如同Dijkstra、图灵、赫伯特西蒙、高德纳...等计算机先贤一样,了解数学和数学所衍生的一系列与数学决策有关的学科。计算机本来就是一种工具,你还原回它的本质它也没有什么如同神明一般的存在。就是找最大的数字,以一个为最大的,然后和别的数字比,有大的出现就换,没有继续下去。

2024-04-17 15:11:36 222

原创 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 394

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

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

2024-04-06 13:05:25 760

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

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

2024-04-01 14:16:48 858

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

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

2024-03-31 23:37:19 105

原创 四平方和定理问题

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

2024-03-29 20:45:44 221

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

但是需要注意的是,如果直接穷举需要四个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 301

原创 关于字符串的比较

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

2024-03-28 14:39:37 199

原创 不要忽视小问题

水仙花数是指:一个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 231

原创 票据查重查漏问题

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

2024-03-26 23:27:31 564

原创 以目标为导向

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

2024-03-25 19:33:58 136

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

奉上错误代码(上面)

2024-03-22 14:51:19 210

原创 在洛谷以及蓝桥杯

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

2024-03-22 09:59:40 312

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

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

2024-03-22 09:40:15 171

原创 翻硬币游戏的解

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

2024-03-21 22:30:57 335

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

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

2024-03-14 15:43:27 107

原创 自适应,人动数据

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

2024-03-14 13:05:31 124

原创 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 133

原创 给定时间求这是本年的第几天

我按照自己的想法非得先判断是闰年与否才开始计算,十分繁琐。我从这学到——编写代码要把大同的数据让计算机一并处理,再去处理唯一的特殊情况,这比便判断。这样程序不仅仅是在可重复使用上对用户的方便更是对编写代码者的方便(虽然二者经常会被搞混)。之前我在编写个代码的时候是把它用大量的if逻辑判断语句,我并没有把是闰年这个条件选择出来,只是依据一般的想法——我并没有想到把是不是闰年这一条件给反到一旁分开判断和补齐,而是简单粗暴的把月份分成了>2和

2024-03-09 11:35:58 103

原创 AI与编程学习

在C语言中,指针通常与字符数组或字符串打交道时会涉及到ASCII码的转换,而不是用于表现多位数的第一位。`48`这个值对应的是ASCII码表中数字字符`'0'`的编码。这里的减法操作实际上就是基于ASCII码的特性,将字符 `'1'` 的ASCII码值减去 `'0'` 的ASCII码值,结果就得到了数值 `1`。但请注意,上述过程并不涉及指针的加减运算,而是对字符数组内容的操作。这样,`digitValue` 就会是 `1`,同时指针 `ptr` 会指向 `'2'`。

2024-01-13 22:30:37 526

原创 二维数组的一些用法

二维数组如a[m][n],可以用a[m]来指代二维数组的第m行的全体成员。也可以使用strcpy(s[j],s[+j+1])来把第+j+1行的全体复制给第j行。

2024-01-13 20:36:47 343

原创 指针的运用

可以看到指针p指向任何二位数组里的p+超过行列的数字,自动往下指向下一个数组的数。不知道是不是书上数组的排列方式还是按照人认为的数字的排列顺序,这里指的是全部都检查一遍,没体现出数组的排列的方式。

2024-01-13 13:48:11 348

原创 数学思维在编程中的体现

报数这里原来的m、n、i组合就用不上了。原来第一循环里面的可以包含在以后的循环里,这里就不是了,因为循环距离不是周期距离了。只能说先把报号3的第一批人去掉。当然后面的人就基本上没什么规律了。第几个也不是单纯的序号能不能被3整除来判断。因此若是人就直接继续数123,这里就只能额外引入一个k来计数了。看完答案后可以总结出原因来了——是题目给的条件只包含了m、n、i这三个要素,其中i是由学过的方法约束的。而这里为了程序的方便性必须使用循环结构。循环条件就只能在m、n、i的有意义的组合里面找。

2024-01-13 09:41:17 339

原创 数值传输位置带来的位置交换位置

函数的操作是同一位置的数进行一定的操作,放入不同的函数同一操作,造成了换盘子的效果。递归函数,一层一层,一层一层,这是最好的特点。这一步骤是具体的,之后的是不详细的。

2024-01-13 09:15:07 313

原创 选择排序法+检擦程序

​​程序错误后我依据上一次老师教给我的方法,在各个操作下都放入了一个printf( );来检查是哪个部位出来差错。原来第一个循环就错误了。原来是a[0]才是第一个。\n的作用看来是这一句之后换行,这挺好的,是否符合它的名字,'\n'换行。这样一来,脑子里有关的概念第一次被澄清了。和原来的代码相比,这是全不同的思路。

2024-01-13 08:34:41 320

原创 计算机思维进阶

可以看到我之前把“单词”看作一个单位的决定错了,因为这不能像整数型那样1000这样的整体可以看作一个整体。站在计算机的角度上看问题,我们只能对单个字符做判断,之前的while(scanf(“%s”,a ))这里也用不了,因为不论带入数组(要清零)还是不能像整数型那样1000这样的整体可以看作一个整体都直接宣判了这个方法的不行。一个是没赋初值(int 型),一个应该是'a' 、'z' 、'A'、 'Z'、 '0'、 '9'下面的图,里面原本有两个基础的语法错误。

2023-12-15 08:32:49 338

原创 当你遇到不会的就想想数学

这里看起来云里雾里的,实则是他没有强调一个数学定理——费马最小定理。

2023-12-10 13:29:24 362

原创 阅读代码时候易犯的小错误和调试方法的成果实践

与已经成功的我的进行比较,这与原来的错误的带啊知识因为for(j)的大括号的范围不同,其他程序语句一摸一样,但是就是因为这一个小问题,这段代码(谭浩强真正的源码)的意思就从先把数组里的最大数提取到第一位然后再分别按大小提取,变成了数跟着for循环转移(如果条件满足的话),一个个去比较相邻的数。由于听了网上说的谭浩强的书有问题就开始怀疑书上代码的正确性了,然而我去看那著名的——谭浩强第四册错误不完全收集(第五册大多继承了第四册)找到了源代码,却发现没有问题。前面将数逐个输入的部分已经完成了。

2023-12-10 10:38:21 364

原创 如何调试变成程序

把%d写成了%c了,没发现,写完代码之后就感觉脑子不够用了,实在检查不出问题。想了一会实在想不出来认错了,去找老师去了,老师在了解了我的思路之后也没有看出来什么问题(这里划重点,有的时候就是这样的,人脑是有限度的),就跟我说:我教你怎么调试吧。把printf复制到每一个交换结果的后面,检测他们有没有问题。以为是学艺不精,实则是大问题。可以发现,第一行就有问题了,与后面的暂时无关。

2023-12-07 19:28:22 309 1

原创 数组运用失败的纠错、反思

这就是任务,我直接想到了最简单的方法,就是搞进数组里,我想的就是把数传入到但是不知道怎么在主函数里scanf( )多位十进制数字转到复合函数int fun(int x )里然后把int x转入到数组里就一直在找方法,我一直想,直到物我想到了gets( )函数我后来发现gets( )函数只能终端输入,而不能自动化所以就完全不可行了。学了指针后才发现对数组直接修改就行——return(这里不用加任何东西,括号也不用);因为数组名就是特殊的指针。

2023-12-07 18:06:56 906 1

原创 小题目大技巧

这里充分利用了返回的1、0(1、0返回是最好的,其他基本上不可能),10、00、11、01、但是计算机不是输出伪的信号,而是自己判断,它只会进制数。(当然亦可以分开判断左右的数字是否是素数(1、0)用逻辑语句统一判断、比较,但是太麻烦,人类的思想,机器的局限成的伪)本来是想要前后开工,一个for循环检测左边,另外一个向右边循环,(同时检测左右相同的距离的数,但是没有继续往下去想)其实我们就应该往对称方向上去想不同的两个(一左一右)这就说明了它是能够对两个不同情况进行区别。

2023-12-06 22:41:47 352 1

原创 scanf函数以及逻辑的巧用

但是如果你不回车直接空格还是可以打出不符合条件的数值的。可以想象在我们使用的软件里面,当我们输入一堆数值时,它所运行的也不过是一整个程序而已。scanf函数会检测到所有的sanf函数,这意味着即使有很多次scanf函数的需求也只需要输入一次就可以了(计算机万岁)这里涉及了之前一直都没搞明白的while下面scanf的一直输入,只不过之前自己花费大力气去学会的,这次任务太多,迫不得已是看了老师PPT的代码,自己才有时间去探究的。这是一个简单的任务,但是它所使用的技巧和涉及的知识却使人眼前一亮。

2023-12-06 00:14:02 285 1

原创 如同数列通项公式一般可能前面符合情况而之后的项却不成立问题

乍一看这个代码只是有一些小问题,毕竟只有最后一个条件没有满足——输入日期82200228然后测试结果应该是YES而不是NO但是我去检查的时候发现日子的提取我用的是日子d=输入的8位数年月日日期n/1000000但你很快就能发现这根本不是求的日子,而是8位数的最前端两位。我这时就震惊了,那我的错误代码竟然通过了前面的测试!

2023-12-05 20:46:41 384

原创 确定性思维

计算机你不给它赋值它就会随机来自己赋值或者自己指向某个地址,它不会空在那里说——我等会要用的,我先拿出来先放在这里什么也不干。

2023-12-05 20:27:40 299

原创 读代码实践结果

只要不是一个一个去抄就还是会遇到问题,在去看就会更容易发现不会的地方。比如判断是否为回文数那里,我死板地照着前面做倒叙数的方法return那里也只会返回加起来的数,不会怎么判断(被传过来的n值已经改变了,根本不可能再进行与之有关的逻辑判断)。电脑在不停的穷举我们不可能让它让它知道最后一个数(无法标记得,找出来是计算机的工作,不会想要人工去找的,也找不到,应为不同范围的回文数个数情况还不一样)后面不用加逗号(如果回文数不是范围内的最后一个数,这才是更普遍化的更详细的要求),也不可能让它返回之前的步数——倒。

2023-12-05 09:28:18 296

原创 计算机思维、工程思想

x、y、z计算机是不会认的,它只会认识数字。计算机会的就是穷举法(计算机思维),它只会加减乘除和逻辑判断(还是0和1,人的思维的延申,方便表达)。所以我们要让计算机列举在范围内的全部,而我们给与的逻辑判断只是筛子,只是提供工具(逻辑是人给计算机的工具,只存在于人的思维之中),计算机方便人的生活但不可能自己创造工具,它不是AGI。——通讯领域的祖师爷——克劳德·香农——《信息论》(或许你可以去挑战,然后引领人工智能的发展)的理论基础就是模拟信号,这是基础元思想,除非你去挑战克劳德·香农的理论。

2023-12-03 23:26:00 399 1

空空如也

空空如也

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

TA关注的人

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