题解列表

筛选

基础解法(易懂)

摘要:#include<stdio.h> int max(int x,int y) { return x>y?x:y; } int min(int x,int y) { return x>……

利用行,列增量的规律解题。

解题思路:两层循环,利用蛇形矩阵的每一行,列增量的规律(每一列的增量比行始终多1)来定义循环的次数,从而实现行列的递进。注意事项:两次循环关联变量的定义。参考代码:N=int(input())a=1foriinrange(1,N+1):print(a,

大象喝水(用if解决小数问题)

解题思路:这题难点主要在于处理没法整除,需要多喝一桶的问题注意事项:注意变量的类型参考代码:```c#include#definePi3.14159intmain(){inth,r;scanf("%d%d",&h,&r);doubles=Pi*r*r*h;intsum=20000;intt=sum/s

跟汉诺塔问题区别不大,结果是其二倍

解题思路:不想思考的话直接2*(2^n-1)就行了,这里用递归的话就是An=2*A(n-1)+2,这里用一个简单的动态规划表示存储每一步递归的结果注意事项:动态规划常见问题要注意,下标尽量从1开始,不然容易搞混,不过这里数据简单,注不注意看个人吧参考代码:a=int(input())dp=[0]*(a

归并排序求逆序对

摘要:解题思路:首先我们给出逆序对的定义:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对。重要的地方在于,一个元素可以不只是在一个逆序对中存在。如果……

详细解释,阶乘末尾k位,小白写法,超容易懂!

首先,计算阶乘用数组模拟阶乘。详细解析可以看;https://blog.dotcpp.com/a/98223会了数组模拟阶乘计算后,就可以按照题目的意思编程啦!先附上注释版代码:```cpp#includeusingnamespacestd;constintN=1e4+10;intans[N+10];

守望者的逃离:贪心加动态规划

解题思路:本题中每一秒可以做出的选择有三种,闪现,跑步,等待,闪现的话他有蓝量的限制,这一秒能不能闪取决于蓝量还够不够,每一步的状态改变是可以影响下一步的,是一个简单动态规划问题,而跑步的话就简单了,每一秒都能开跑,基于截止到上一秒的最大位移量加上这一秒跑出去的距离就行了,

简单明了的函数解法

摘要:解题思路:注意事项:参考代码:#include <stdio.h>              #include <string.h>fan(char a[],int n){int i; for (i ……