基础程序题解
有关基础程序设计题解的博客
海岛Blog
专注于程序设计及其竞赛,专注于集成电路EDA设计
展开
-
B00013 字符串哈希函数
哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希函数用途广泛,这个程序给出了绝大多数常用的哈希函数。源程序来自:哈希算法_百度百科。程序员可以根据自己的需要取用这些代码。需要注意的是,有可能string类的方法已经发生变化。实际使用以下程序的时候,写成str.charAt(i)编译通过不了,改为str.at(i)则编译通过。另外,这个代码转载 2016-06-18 18:10:02 · 1412 阅读 · 0 评论 -
B00012 C++算法库的sort()函数
这个程序介绍了sort()函数个各种用法。源程序来自:std::sort - cppreference.com。程序如下:#include #include #include #include int main(){ std::array s = {5, 7, 4, 2, 8, 6, 1, 9, 0, 3}; // sort using the def转载 2016-06-18 11:30:34 · 2627 阅读 · 0 评论 -
B00003 C++标准库 std::bitset
这个程序是有关std::bitset的简单实例。#include #include using namespace std;int main(){ bitset bitv(0xffff); // bits 0 ... 15 are set to 1; 16 ... 31 are 0 bitv.set(30); bitv.reset(1); if(原创 2016-05-02 10:01:05 · 858 阅读 · 0 评论 -
B00010 map
这是一个有关map的例子程序,代码来自:std::map::emplace - cppreference.com。源程序如下:/* B00010 map */#include #include #include #include using namespace std;int main(){ std::map m; // uses pair's转载 2016-06-16 20:53:00 · 1363 阅读 · 0 评论 -
B00006 函数itoa()
这是一个通用的基础程序,将整型数转换为数字字符串。其中需要用到字符串逆序转换函数reverse()。该程序来自K&C的《C程序设计语言》一书。程序如下:/* itoa 带符号的整数转换字符串 */#include #include void reverse(char s[]){ int i,j; int c; for(i=0,j=str转载 2016-05-14 01:01:55 · 819 阅读 · 2 评论 -
B00005 函数atoi()(去空格,带符号)
这是一个通用的基础程序,将数字字符串转换为整型数。这个程序会去掉字符串开始的空格,并且能够转换带符号的整数。该程序来自K&C的《C程序设计语言》一书。程序如下:/* 带符号的atoi,跳过前面的空格 */#include #include int atoi(char s[]){ int n; int i; int sign;转载 2016-05-14 00:49:22 · 1499 阅读 · 2 评论 -
B00009 C语言分割字符串库函数strtok
切割字符串是常用的处理。这里给出一个使用函数strtok切割字符串的例子。使用C语言的库函数strtok来切割字符串的好处在于,可以指定任意字符作为分隔符来切割单词。使用该函数,切割字符串的分隔符可以同时指定多个,放在一个字符串数组中。程序中,指定了以空格“ ”、逗号“,”和句号“.”作为分隔符。程序如下:/* B00009 C语言分割字符串库函数strtok */原创 2016-06-15 20:08:53 · 1128 阅读 · 0 评论 -
B00011 unordered_map
是一个有关unordered_map的例子程序,代码来自:std::unordered_map - cppreference.com。unordered_map是采用哈希搜索的map。搜索速度上也许要优于map。需要主意的是,对map对象进行遍历时,该对象有可能是未排序的。源程序如下:/* B00011 unordered_map */#include #incl转载 2016-06-17 04:59:09 · 787 阅读 · 0 评论 -
B00014 C++实现的AC自动机
代码来自:A C++ implementation of the aho corasick pattern search algorithm。源程序如下:/** Copyright (C) 2015 Christopher Gilbert.** Permission is hereby granted, free of charge, to any person obtaining转载 2016-06-19 22:08:26 · 2476 阅读 · 0 评论 -
B00007 快速模幂运算的两个C语言程序
代码来自维基百科的Modular arithmetic。这两段代码都不是大整数计算的程序,是2进制64整数的计算程序,数据不能大于2进制63位。两段代码分别如下:uint64_t mul_mod(uint64_t a, uint64_t b, uint64_t m){ uint64_t d = 0, mp2 = m >> 1; int i; if (a >= m)转载 2016-05-16 18:41:58 · 1578 阅读 · 0 评论 -
B00008 C++实现的大整数计算(一)
程序来自:BigInteger。源程序如下:/* * @author panks * Big Integer library in C++, single file implementation. */#include #include #include #include #define MAX 10000 // for stringsusing namespace转载 2016-05-22 22:39:20 · 1040 阅读 · 1 评论 -
B00004 atoi函数
这是一个通用的基础程序,将数字字符串转换为整型数。程序如下:/* atoi函数:将字符串s转换为相应的整型数 */#include #include int atoi(char s[]){ int i, n; n = 0; for(i=0; isdigit(s[i]); i++) n = 10 * n + (s[i] - '0');原创 2016-05-08 06:26:06 · 580 阅读 · 0 评论 -
B00002 C语言位字段实例
本程序源自维基百科。Declaring a bit field in C:#include // opaque and show#define YES 1#define NO 0// line styles#define SOLID 1#define DOTTED 2#define DASHED 3// primary colors#define BLUE转载 2016-05-02 09:04:21 · 872 阅读 · 4 评论 -
B00001 C语言动态存储分配空间作为数组
将动态存储分配的空间作为数组的存储空间来使用。使用随机数函数生成数据填入数组中,随机数为整数,值的范围为0到999。用冒泡排序对数据进行排序。程序如下:#include #include#include void getData(int [], int);void printData(int [], int);void bubblesort(int a[], int原创 2016-05-02 07:34:33 · 1615 阅读 · 0 评论 -
B00015 平方矩阵问题
给定n,m,min和max,求所有的,满足0要求:不得使用暴力法,算法复杂度要求O(n,m)提示:1.设有k和l,若满足k*l是不满足条件的;若k*l>max,对于i>=k且j>=l,则是不满足条件的。2.可以考虑用三分法。3.需要考虑n和m比较小的情形,例如0,1,2,也许需要做特殊的处理。样例数据如下:输入:n,m,min和max分别为10,10,31,41原创 2017-08-30 10:08:05 · 925 阅读 · 2 评论