一些思考
非技术性的思考
喵哈木
这个作者很懒,什么都没留下…
展开
-
关于计算机算法设计方法的思考
想成男女配对,除了最开始最容易想到的列举全部情况的方法,我们其实还可以就是如“啊哈算法”里面描述的那样,给出一个情景。这时就可以多余的人去找有伴的人,问他能不能去找自己另外的熟人。相反的是我认为这反而是设计的根本。人能思考的逻辑问题计算机一般都可以实现,重要的是如何把问题掰碎扔给计算机解决。但是我们只要能让多余的人去找有伴的人,问他能不能去找自己另。只要配对的人中有一个人能找到自己一个没人配对的可以配对的伴侣就可以了。暴力枚举其实一般人人最开始想到的也是这个,而不是计算机的独有的。关注最后配对的情况。原创 2024-10-01 12:40:35 · 86 阅读 · 0 评论 -
排序算法的理解
计算机不能直接继承不等式的传递性特征,这个时候才用递归调用去人为的分成不同的部分。或者说,一部分已经大致排序好的数放在一边,另外一边再排。排序算法借鉴了数学里面的不等式的思想。原创 2024-10-01 08:16:03 · 145 阅读 · 0 评论 -
阅读代码时候易犯的小错误和调试方法的成果实践
与已经成功的我的进行比较,这与原来的错误的带啊知识因为for(j)的大括号的范围不同,其他程序语句一摸一样,但是就是因为这一个小问题,这段代码(谭浩强真正的源码)的意思就从先把数组里的最大数提取到第一位然后再分别按大小提取,变成了数跟着for循环转移(如果条件满足的话),一个个去比较相邻的数。由于听了网上说的谭浩强的书有问题就开始怀疑书上代码的正确性了,然而我去看那著名的——谭浩强第四册错误不完全收集(第五册大多继承了第四册)找到了源代码,却发现没有问题。前面将数逐个输入的部分已经完成了。原创 2023-12-10 10:38:21 · 381 阅读 · 0 评论 -
数学思维在编程中的体现
报数这里原来的m、n、i组合就用不上了。原来第一循环里面的可以包含在以后的循环里,这里就不是了,因为循环距离不是周期距离了。只能说先把报号3的第一批人去掉。当然后面的人就基本上没什么规律了。第几个也不是单纯的序号能不能被3整除来判断。因此若是人就直接继续数123,这里就只能额外引入一个k来计数了。看完答案后可以总结出原因来了——是题目给的条件只包含了m、n、i这三个要素,其中i是由学过的方法约束的。而这里为了程序的方便性必须使用循环结构。循环条件就只能在m、n、i的有意义的组合里面找。原创 2024-01-13 09:41:17 · 358 阅读 · 0 评论 -
读代码实践结果
只要不是一个一个去抄就还是会遇到问题,在去看就会更容易发现不会的地方。比如判断是否为回文数那里,我死板地照着前面做倒叙数的方法return那里也只会返回加起来的数,不会怎么判断(被传过来的n值已经改变了,根本不可能再进行与之有关的逻辑判断)。电脑在不停的穷举我们不可能让它让它知道最后一个数(无法标记得,找出来是计算机的工作,不会想要人工去找的,也找不到,应为不同范围的回文数个数情况还不一样)后面不用加逗号(如果回文数不是范围内的最后一个数,这才是更普遍化的更详细的要求),也不可能让它返回之前的步数——倒。原创 2023-12-05 09:28:18 · 316 阅读 · 0 评论 -
计算机思维进阶
可以看到我之前把“单词”看作一个单位的决定错了,因为这不能像整数型那样1000这样的整体可以看作一个整体。站在计算机的角度上看问题,我们只能对单个字符做判断,之前的while(scanf(“%s”,a ))这里也用不了,因为不论带入数组(要清零)还是不能像整数型那样1000这样的整体可以看作一个整体都直接宣判了这个方法的不行。一个是没赋初值(int 型),一个应该是'a' 、'z' 、'A'、 'Z'、 '0'、 '9'下面的图,里面原本有两个基础的语法错误。原创 2023-12-15 08:32:49 · 356 阅读 · 0 评论 -
阅读代码——效率
而且也没发现之前的是c*c但没意识到fun()的返回值只有1和0。我搞了好几个小时没想到零位一条思路——把前面的数转化成个位数,从而实现循环。因此我们最好去阅读别人的代码,看看新的手法,和之前说的一样,不是自己不能一下子全部都搞完,而是这样更有性价比。我花了好久的时间想要用数组(配合%和/)把输入的数的各个位数分别提取出来,理论上是可以的,但我想要采取的从个位数%10开始求得,%10*10、%10*10*10求出更高位数的,但是脑子容量太小,没有能清晰地了解全部过程。(这段代码是如此的巧妙)原创 2023-11-30 17:05:12 · 331 阅读 · 0 评论 -
AI与编程学习
在C语言中,指针通常与字符数组或字符串打交道时会涉及到ASCII码的转换,而不是用于表现多位数的第一位。`48`这个值对应的是ASCII码表中数字字符`'0'`的编码。这里的减法操作实际上就是基于ASCII码的特性,将字符 `'1'` 的ASCII码值减去 `'0'` 的ASCII码值,结果就得到了数值 `1`。但请注意,上述过程并不涉及指针的加减运算,而是对字符数组内容的操作。这样,`digitValue` 就会是 `1`,同时指针 `ptr` 会指向 `'2'`。原创 2024-01-13 22:30:37 · 543 阅读 · 0 评论 -
当你遇到不会的就想想数学
这里看起来云里雾里的,实则是他没有强调一个数学定理——费马最小定理。原创 2023-12-10 13:29:24 · 380 阅读 · 0 评论 -
确定性思维
计算机你不给它赋值它就会随机来自己赋值或者自己指向某个地址,它不会空在那里说——我等会要用的,我先拿出来先放在这里什么也不干。原创 2023-12-05 20:27:40 · 310 阅读 · 0 评论 -
计算机思维、工程思想
x、y、z计算机是不会认的,它只会认识数字。计算机会的就是穷举法(计算机思维),它只会加减乘除和逻辑判断(还是0和1,人的思维的延申,方便表达)。所以我们要让计算机列举在范围内的全部,而我们给与的逻辑判断只是筛子,只是提供工具(逻辑是人给计算机的工具,只存在于人的思维之中),计算机方便人的生活但不可能自己创造工具,它不是AGI。——通讯领域的祖师爷——克劳德·香农——《信息论》(或许你可以去挑战,然后引领人工智能的发展)的理论基础就是模拟信号,这是基础元思想,除非你去挑战克劳德·香农的理论。原创 2023-12-03 23:26:00 · 416 阅读 · 1 评论 -
控制应优先
先从大体上的去找规律,然后才是数字归纳(更为详细的),同时控制关系应该优先(这里是天数和位置)。是否涉及所有对象不是广泛,如果是具体的数值就不是广泛。原创 2024-06-04 15:26:56 · 188 阅读 · 0 评论 -
写代码之前一定要提前想好思路
就和写数学题目一样,在做题目之前要先把思路确立下来。可能是我早年做数学的时候老是着急做题目没怎么分析过题目,把这个习惯不自觉地代入了代码的写入当中。习惯的养成使得我即使明白了自己的问题也依然会不断的犯错,看来只有刻意地提醒自己才能够消除这个坏习惯。days的判断重复了,然而此时我写了十分多的代码所以脑子累得根本分析不出来了,还有return的只有2000的没有1900的了。这都是我不做计划的恶果。这道题目看起来简单,让人觉得一上手就可以了。然而这是最大的陷阱。原创 2024-05-29 22:51:02 · 688 阅读 · 0 评论 -
如何纠错?
看起来没什么问题 但是如果自己代入3 、7就可以知道第一个满足后但是n变了,要经过第二个if判断这时就坏菜了。解决方法就是在每个括号里加上return;但是这个函数的if外面必须要有一个return 所以删掉。或者删掉后面两个if直接在输入之前对数据进行判断。原创 2024-06-06 20:13:19 · 170 阅读 · 0 评论 -
做好程序前设计
这里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 阅读 · 0 评论 -
之前翻硬币问题胡思乱想的完善
因为像数学一样转化这个问题就说明它是有规律的,但是请注意到那些看可以被重写(重述)的问题是在基本的问题上进行改进的(因为这就和数学里面的“范畴论”一样,不同的问题之间之所以可以一步一步的转化就是因为它转化后的,如代数转几何是因为几何就是代数建立的基础)而算法的简化问题就是在之前的问题的认识之下(不是穷举)一一对应的结果(即使人们并未意识到),所以我们可以丝毫不怀疑的说就是要这样解决的。也许有的知识是有规律的,但是我的数学技术还是不够深,所以暂时还是不能知道其中的奥秘(或许穷不穷举都是数学问题?原创 2024-04-06 13:05:25 · 799 阅读 · 0 评论 -
躲得了初一躲不过十五——之一定会遇到不会的题目只能当作第一次学之这次遇到的是暴力算法
但是需要注意的是,如果直接穷举需要四个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 阅读 · 0 评论 -
不要“依赖”具体的例子
乍一看第一个没有什么问题,我们求得了所有巧克力最小的边长的最大公约数,然后通过第一个while循环来找到所有巧克力里面最小边所能被切割的最大边数(最大公约数是用这个长度的正方形能把所有的巧克力切割成一模一样的小部分),这样做可以从最大的切割边开始测试能不能让所有的小朋友都吃到,而且不用去管最大公约数以下的长度(应为我的check方法里会检测minSquare - 1,如果不满足要求就会继续 减 1,而且只要用 if (number > = K)进行判断就可以了)。这是依据这个例子想到的,你去试试看,。原创 2024-04-01 14:16:48 · 1398 阅读 · 0 评论 -
以目标为导向
为了去打蓝桥杯,我没有按照书上的去做(例子太简单),基本上没有什么作用,就是基本的罗列。我也就没有去刷那些基础的题目和积累技巧(类似c语言里面的while((c = getchar)!= '\0' ))这样的东西)但是我又必须用到这些东西了所以我就决定上网搜,肯定不止我一个人遇到了这样的问题。于是我就去搜索——果然。原文链接:https://blog.csdn.net/qq_37701443/article/details/108309490。原创 2024-03-25 19:33:58 · 159 阅读 · 0 评论 -
不要忽视小问题
水仙花数是指:一个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 阅读 · 0 评论 -
自适应,人动数据
定义一个int类型变量i,i为由浮点数变量d四舍五入后的整数类型,请将转换后的i进行输出。四舍五入之后的整数(小数点后一位>=5则进一,否则舍去)用户随机输入的浮点数。原创 2024-03-14 13:05:31 · 141 阅读 · 0 评论 -
多举例子!
由于之前的经验,我检查的时候也到while循环这里了,但就是没有检查出问题来。原创 2024-08-06 12:43:14 · 111 阅读 · 0 评论 -
编程中的数学逻辑
首先是把scanf给放在了外面我看到输出给定的题目条件首先就以为要输出那么多的数于是想要给它一一对应,但后来又发现这样做不成,应为这样的话用不上循环的条件了。我一开始用的是Dev-C++去先写的(一下是我的错误行径公开大赏,while里面的让我改过来了,里面本来因该是mum=0、mun==0)也尝试过先把mum=14打出来,但是也没发现后面的数字的规律(收到了斐波那契那道题的影响)昨天做编程作业的时候发现了很有意思的东西(自身的错误和数学逻辑在编程中的应用)。结果还是不成功,想了好久,直到看了别人写的。原创 2023-11-07 09:11:08 · 42 阅读 · 0 评论 -
学习方法探索
做的时候把strcmp打成了strcpy(str[0]写成了[1])一直觉得奇怪为什么会输出Tuesday,每次都改一个做了对照试验才发现了问题所在——这也说明了科学方法——对照试验的有用性,这会切身感受到了。我在网上看了不少有关中国大学专业教材的“美名”——所以想提前学习,完成国内学校的教学内容——至少有口饭吃。这次我提前看了前面的内容,想试一试先学内容再回来做题的内容。一开始没做出来真的很自责,但后来去看书的时候发现自己不了解C的语法,思路是对的。因此我有理由先坚持一段时间我的学习方法。原创 2023-11-20 16:01:32 · 37 阅读 · 1 评论 -
学编学习——方法探明1
紧接上文,我已经看忘了《谭浩强C》有了基础——及格,又看了别的C书——受华罗庚、老师的影响。去细想的时候发现printf的输出的还是*p明明p就是地址了。对此我很好奇,第二天我用手机上的c编程器试了试。我想破头没想出来*有没有p不都是地址吗?后来才发现printf要的是a、b这样的常量或者代表常量的。就连c语言创始人丹尼斯里奇也只是在暗示。(大佬不需要这些小玩意)还是从一些例子里得到的不完整的认识。我特意看了指针的部分。原创 2023-11-22 08:14:13 · 29 阅读 · 1 评论