初学算法
写bug战神
这个作者很懒,什么都没留下…
展开
-
以挖矿为模型的简单0-1背包代码(附超详细注释)
My first 0-1 bag:#include<stdio.h>#define N 5#define M 10int max(int a, int b){if (a > b)return a;elsereturn b;}int main(){int原创 2018-11-15 15:14:47 · 428 阅读 · 0 评论 -
CCF认证 - 201512-2 -消除类游戏 (C语言代码实现)(90分)
#include<stdio.h>int main(){ int n, m, a[30][30], flag[30][30], tag = 1; scanf("%d%d", &n, &原创 2019-03-15 01:34:43 · 1602 阅读 · 1 评论 -
CCF认证 - 201503-2 - 数字排序 (C++代码实现)(100分)
C++相较于C来说是十分好用,这次题目与之前的公共钥匙盒都用到了一个知识点,即用结构体数组实现数组的分字段排序(所以要在数组中表示输入的数字及对应出现次数),此外,还要考虑输入的数字中有0的情况,所以要开辟一个长度1000的结构体数组,用来存放对应数字出现的次数;有个小技巧就是用数组的下标表示输入的数字,每输入一个数字,对应下标的元素加1,这样数组的每个元素与其下标就共同完成了对输入数字的计数;...原创 2019-03-15 09:03:37 · 352 阅读 · 0 评论 -
CCF认证 - 201412-1 - 门禁系统 (C语言代码实现)(100分)
#include<stdio.h>int main(){ int a[2][1000] = {0}, n; scanf("%d", &n); for(int i = 0; i < n; i++) scanf("%d", &a[0][i]); for(int i = 0; i < n; i++) { for(int j = 0; j &l...原创 2019-03-15 09:26:34 · 782 阅读 · 0 评论 -
CCF认证 - 201604-1 - 折点计数 C语言代码实现(100分)
#include&lt;stdio.h&gt;int main(){ int n, a[1000] = {0}, flag = 0, count = 0; scanf("%d", &amp;n); for(int i = 0; i &lt; n; i++) scanf("%d", &amp;a[i]); for(int i = 1; i &a原创 2019-03-10 21:59:00 · 423 阅读 · 0 评论 -
CCF认证 - 201609-2 - 火车购票 C语言代码实现(100分)
之前在考虑问题时忽略了类似于这种情况:假如有21人购票,每个人买四张票,那么之前的90分代码会导致第21人无法购买成功,这是因为for(h = 0; h < 20; h++)该层循环在h到达20后不再继续,事实上第21人的四张票仍然能够以散座的形式出售,所以导致代码错误。在for(int i = 0; i < n; i++)与for(h = 0; h < 20; h++)...原创 2019-03-10 22:39:55 · 503 阅读 · 0 评论 -
CCF认证 - 201412-2 - Z字形扫描 (C语言代码实现)(100分)
本题采用下标计算的方法解决,具体方案是:对于按对角线展开的每行上的元素,其纵坐标与横坐标之和总为对应的行数,此外,奇数行和偶数行下标增长的顺序不同,注意以上两点即可。#include<stdio.h>int a[500][500];int main() { int n; scanf("%d", &n); for(int i = 0; i < n; i++)...原创 2019-03-15 11:24:43 · 872 阅读 · 0 评论 -
CCF认证 - 201409-1 - 相邻数对 (C语言代码实现)(100分)
#include<stdio.h>#include<math.h>int main(){ int n, a[1000] = {0}, count = 0; scanf("%d", &n); for(int i = 0; i < n; i++) scanf("%d", &a[i]); for(int i = 0; i < n; i...原创 2019-03-15 13:42:32 · 376 阅读 · 0 评论 -
CCF认证 - 201409-2 - 画图 (C语言代码实现)(100分)
#include<stdio.h>int a[100][100];int main(){ int n, sum = 0; int zx_h, zx_z, ys_h, ys_z; scanf("%d", &n); while(n) { scanf("%d%d%d%d", &zx_h, &zx_z, &ys_h, &ys_z);...原创 2019-03-15 14:51:26 · 456 阅读 · 0 评论 -
CCF认证 - 201604-2 - 俄罗斯方块 C语言代码实现 (90分)
#include &lt;stdio.h&gt;int main(){ int a[15][10] = {0}; for(int i = 0; i &lt; 15; i++) for(int j = 0; j &lt; 10; j++) scanf("%d", &amp;a[i][j]); int b[4][4] = {0}, temp1[4] = {0}, temp2[4原创 2019-03-11 17:47:22 · 1114 阅读 · 1 评论 -
CCF认证 - 201403-1 - 相反数 (C语言实现)(100分)
#include<stdio.h>int main(){ int n, a[500] = {0}, count = 0; scanf("%d", &n); for(int i = 0; i < n; i++) scanf("%d", &a[i]); for(int i = 0; i < n; i++) for(int j = i + 1;...原创 2019-03-16 00:00:23 · 638 阅读 · 2 评论 -
CCF认证 - 201312-1 - 出现次数最多的数 (C语言代码实现)(100分)
#include<stdio.h>int a[2][10000];int main(){ int n, num, max = 0; scanf("%d", &n); for(int i = 0; i < 10000; i++) a[0][i] = i + 1; for(int i = 0; i < n; i++) { scanf("%d", ...原创 2019-03-16 01:39:00 · 655 阅读 · 0 评论 -
CCF认证 - 201312-2 - ISBN号码 (C语言代码实现)(100分)
#include<stdio.h>int main(){ char a[13] = {'\0'}; int b[9] = {0}, count = 0, sum = 0, tag; for(int i = 0; i < 13; i++) { scanf("%c", &a[i]); if(a[i] >= '0' && a[i] &l...原创 2019-03-16 17:23:16 · 646 阅读 · 0 评论 -
CCF认证 - 201403-2 -窗口(C语言代码实现)(100分)
#include&amp;amp;lt;stdio.h&amp;amp;gt;struct W{int hang1, lie1;int hang2, lie2;int no;}w[10], flag;//结构体数组w和flag记录窗口信息;int main(){int n, m, c[10][2] = {0}, tag = 0;scanf(&amp;quot;%d%d&amp;quot;, &amp;amp;原创 2019-03-16 17:25:10 · 576 阅读 · 0 评论 -
CCF认证 - 201709-2 - 公共钥匙盒 C++代码实现 (plus 详细注释)(100分)
公共钥匙盒感觉是我练习ccf认证题库历年前两题(菜鸟。。。)里感到最难的题目。。。这里的思路是:1、首先初始化一个起始钥匙盒keybox,用来盛放每次归还/借出钥匙后的钥匙排布状态,初始化为1 ~ n表示钥匙的位置,若钥匙借出,则对应位置置为0;2、建立结构体数组k_u(为了对二维数组进行分字段排序)录入钥匙的存取情况;3、对k_u数组以归还时间k_u[i].end为第一关键字,以k_u...原创 2019-03-12 19:54:37 · 526 阅读 · 0 评论 -
CCF认证 - 201503-1 - 图像旋转 - C语言代码实现(100分)
这道题一开始想复杂了,其实只需要先按矩阵的转置输入,再由下而上输出矩阵的每行即可;#include<stdio.h>int a[1000][1000];int main(){ int n, m; scanf("%d%d", &n, &m); for(int i = 0; i < n; i++) for(int j = 0; j < m; j...原创 2019-03-15 00:37:29 · 451 阅读 · 0 评论 -
CCF认证 - 201609-2 - 火车购票 C语言代码实现(90分)
#include&amp;lt;stdio.h&amp;gt;int main() { int n, a[100] = {0}, seat[20][5] = {0}, num, ls = 5, flag = 0, tag = 0;//数组seat表示座位的占用情况; scanf(&quot;%d&quot;, &amp;amp;n); for(int i = 0; i &amp;lt; n; i+原创 2019-03-10 21:37:45 · 333 阅读 · 0 评论 -
CCF认证 - 201609-1 - 最大波动 C语言代码实现(100分)
#include&lt;stdio.h&gt;#include&lt;math.h&gt;int main(){ int a[1000] = {0}, n, dif = 0;//dif表示差值; scanf("%d", &amp;n); for(int i = 0; i &lt; n; i++) { scanf("%d&quo原创 2019-03-10 15:14:34 · 534 阅读 · 0 评论 -
用静态数组在函数递归过程中保存中间数据(以递归输出斐波那契数列为例——详细注释)
通过建立一个静态数组来保存递归函数调用过程中产生的中间数据,可以规避掉很多不必要的重复计算, 能在很大程度上提高程序的运行效率,尤其是在动态规划等需要递归调用的算法中应用广泛。下面以递归输出斐波那契数列为例, 通过建立一个静态数组,来使得程序运行避免超时。#include&amp;lt;stdio.h&amp;gt;long int count[1000];//establish an array to s...原创 2018-11-19 00:59:35 · 2493 阅读 · 0 评论 -
以挖矿为模型的0-1背包问题(递归版本)
以挖矿为模型的0-1背包问题(非递归)上次写了以挖矿为模型的0-1背包问题,这次为递归版本,可以正确输出结果,但是需要建立中间数组存储递归过程中产生的结果,否则程序超时。#include&lt;stdio.h&gt;#define N 5#define M 10int max(int a, int b){ if (a &gt; b) return a; else retur...原创 2018-11-17 02:09:06 · 202 阅读 · 0 评论 -
归并排序的递归实现(C语言)
#include<stdio.h>#include<stdlib.h>int MergeSort(int sourceArr[], int tempArr[], int low, int high);int Merge(int tempArr[], int sourceArr[], int low, int mid, int high);int main(){...原创 2018-12-10 00:33:16 · 1061 阅读 · 0 评论 -
Quicksort 递归实现------C语言
#include<stdio.h>#include<stdlib.h>int partition(int *a, int low, int high);int QuickSort(int *a, int low, int high);int swap(int *a, int low, int high);int main(){ int a[10]; for(...原创 2018-12-11 23:51:21 · 188 阅读 · 0 评论 -
CCF认证-201709-1-打酱油 C语言代码(100分)
#include&lt;stdio.h&gt;int main(){ int N; scanf("%d", &amp;N); int sum = 0, m, n, count = 0; m = N / 10; // m为无优惠时买得的瓶数; n = m; // n为剩余的瓶数; if(n &gt;= 5) { count += (n / 5) * 2; } n %=...原创 2019-02-27 14:32:17 · 180 阅读 · 0 评论 -
CCF认证-201803-碰撞的小球-C语言代码实现(100分)
#include&amp;lt;stdio.h&amp;gt;int main(){ int n, L, t; scanf(&quot;%d%d%d&quot;, &amp;amp;n, &amp;amp;L, &amp;amp;t); int b[100] = {0}, fx[100] = {0};// 1 to right; -1 to left; for(int i = 0; i原创 2019-02-24 20:09:35 · 480 阅读 · 0 评论 -
CCF认证-201803-1-跳一跳-C语言代码实现(100分)
#include&amp;lt;stdio.h&amp;gt;int main(){ int n, flag = 0, score = 0, count = 1; scanf(&quot;%d&quot;, &amp;amp;n); while(n != 0) { if(n == 1) flag = 1; else if (n == 2 &amp;amp;&amp;am原创 2019-02-24 20:11:11 · 2754 阅读 · 0 评论 -
CCF认证-201809-2-小明买菜-C语言代码实现(100分)
#include&amp;amp;lt;stdio.h&amp;amp;gt;#define Z 1000000 // 由于在函数内定义超大数组会导致内存溢出, // 所以采用定义全局数组的方式,也可将数组存放在堆上 int main(){ int n, sum = 0; a = scanf(&amp;quot;%d&amp;quot;, &amp;amp;amp;n); int count = 1;原创 2019-02-24 20:15:27 · 1452 阅读 · 0 评论 -
CCF认证-201712-2-游戏 C语言代码实现(100分)
#include&amp;amp;lt;stdio.h&amp;amp;gt;int main(){ int a[1000] = {0}, flag[1000] = {0}, n, k; int count = 1, j = 0, sum = 0, wj; // j控制下标,count控制报数; scanf(&amp;quot;%d%d&amp;quot;, &amp;amp;amp;n, &amp;原创 2019-02-28 18:10:33 · 373 阅读 · 0 评论 -
CCF认证-201703-1-分蛋糕 C语言代码实现(100分)
#include&amp;lt;stdio.h&amp;gt;int main(){ int n, k, flag = 0, sum, count, weight = 0; sum = count = 0; int a[1000] = {0}; scanf(&quot;%d%d&quot;, &amp;amp;n, &amp;amp;k); for(int i; i &amp;lt原创 2019-02-28 20:13:40 · 936 阅读 · 0 评论 -
CCF认证-201712-1-最小差值-C语言代码实现(100分)
#include&amp;amp;lt;stdio.h&amp;amp;gt;#include&amp;amp;lt;math.h&amp;amp;gt;int main(){ int n, i = 0, flag; // flag记录最小差值; int a[1000] = {0}; scanf(&amp;quot;%d%d&amp;quot;, &amp;amp;amp;n, &a原创 2019-02-25 19:30:51 · 612 阅读 · 0 评论 -
CCF认证 - 201509-2 - 日期计算 C语言代码实现(100分)
#include<stdio.h>int main(){ int y, d, flag = 0;//flag为1表示闰年; scanf("%d%d", &y, &d); int month_day[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, day[12] = {0}; for(int i...原创 2019-03-13 22:47:22 · 206 阅读 · 0 评论 -
CCF认证 - 201703-2 - 学生排队 C语言代码实现(100分)
#include&lt;stdio.h&gt;int main(){ int m, n, flag, count;//flag记录每次要移动人员的位置,count用来移动元素; int p, q; scanf("%d%d", &amp;n, &amp;m); int a[1000] = {0}; for(int i = 0; i &lt; n; i++) a[i] =原创 2019-03-09 22:14:36 · 326 阅读 · 0 评论 -
CCF认证 - 201612-1 - 中间数 C语言代码实现(100分)
#include&amp;amp;lt;iostream&amp;amp;gt;#include&amp;amp;lt;algorithm&amp;amp;gt;using namespace std;int main(){ int a[1000] = {0}, b[1000] = {0};//数组a用来存放输入的数,数组b用来不重复地存放a中的数字; int n, countleft = 0, countright = 0,原创 2019-03-09 23:35:41 · 570 阅读 · 0 评论 -
CCF认证 - 201612-2 - 工资计算 C语言代码实现(100分)
#include&lt;stdio.h&gt;int main(){ int t, income, flag; scanf("%d", &amp;t); int tax_income = t - 3500;//tax_income为计税后的收入; float a[6] = {0.03, 0.1, 0.2, 0.25, 0.3, 0.35};//存储小数用实型数组!!! int b[...原创 2019-03-10 14:57:48 · 429 阅读 · 0 评论 -
递归解决约瑟夫环问题
#include<iostream>using namespace std;struct Node{ int val;//存放数值 int tag;//0表示元素删除,1表示元素存在};int num;//记录要出列的序号int fun(int m, int num){ if (m == 1)//递归出口,若仅剩一人,则输出其编号 return m; ret...原创 2019-08-08 17:32:51 · 313 阅读 · 0 评论