C语言实现的bitmap位图代码分享
事实上,我们是用每一个 元素表示一个32位的二进制字符串,这样这个元素可以保留相邻32个号码是否存在的信息,数组范围就下降到10000000/32了.例如对于号码 89256,由于89256 mod 32=2789…8,这样我们应该置a[2789]中32位字符串的第8位(从低位数起)为1.
#define WORD 32 #define SHIFT 5 ////移动5个位,左移则相当于乘以32,右移相当于除以32取整 #define MASK 0x1F //16进制下的31 #define N 10000000 int bitmap[1 + N / WORD]; /* * 置位函数——用"|"操作符,i&MASK相当于mod操作 * m mod n 运算,当n = 2的X次幂的时候,m mod n = m&(n-1) */ void set(int i) { bitmap[i >> SHIFT] |= (1 << (i & MASK)); } /* 清除位操作,用&~操作符 */ void clear(int i) { bitmap[i >> SHIFT] &= ~(1 << (i & MASK)); } /* 测试位操作用&操作符 */ int test(int i) { return bitmap[i >> SHIFT] & (1 << (i & MASK)); }
实现排序(不能重复):
int main(void) { FILE *in = fopen("in.txt", "r"); FILE *out = fopen("out.txt", "w"); if (in == NULL || out == NULL) { exit(-1); } int i = 0; int m; for (i = 0; i < N; i++) { clear(i); } while (!feof(in)) { fscanf(in, "%d", &m); printf("%d/n", m); set(m); } printf("abnother"); for (i = 0; i < N; i++) { if (test(i)) { printf("%d/n", i); fprintf(out, "%d/n", i); } } fclose(in); fclose(out); return EXIT_SUCCESS; }
相关推荐
-
C语言位图算法详解
本文详细讲述了位图算法的定义与C语言实现方法,分享给大家供大家参考之用.具体如下: 位图法定义: 位图法就是bitmap的缩写,所谓bitmap,是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况.通常是用来判断某个数据存不存在的. 例如,要判断一千万个人的状态,每个人只有两种状态:男人,女人,可以用0,1表示.那么就可以开一个int数组,一个int有32个位,就可以表示32个人.操作的时候可以使用位操作. 数据结构: unsigned int bit[N]; 在这个数组
-
C++将CBitmap类中的图像保存到文件的方法
本文实例讲述了C++将CBitmap类中的图像保存到文件的方法.分享给大家供大家参考.具体实现方法如下: 使用下面的代码,可以把CBitmap类中的图像保存到图像文件中.支持格式:BMP.JPG.GIF和PNG. void SaveBitmap(CString strFilePath, CBitmap Bitmap) { if ( Bitmap.m_hObject ) { CImage imgTemp; // CImage是MFC中的类. imgTemp.Attach(Bitmap.operat
-
C++中Cbitmap,HBitmap,Bitmap区别及联系
加载一位图,可以使用LoadImage: HANDLE LoadImage(HINSTANCE hinst,LPCTSTR lpszName,UINT uType,int cxDesired,int CyDesired,UINT fuLoad): LoadImage可以用来加载位图,图标和光标 加载时可以规定加载图的映射到内存的大小: cxDesired:指定图标或光标的宽度,以像素为单位.如果此参数为零并且参数fuLoad值中LR_DEFAULTSIZE没有被使用,那么函数使用目前的资源宽度.
-
C语言中打印特殊图案的实现代码
代码如下所示: 复制代码 代码如下: #include <stdio.h> int main(){ // 主要是找到行和列的关系 int i,j,k; for(i=0;i<4;i++) //做为行循环 { for(j=0;j<=2-i;j++) // 打印一行中的空白 printf(" "); for(k=0;k<=2*i;k++) //打印一行中*号 printf("*");
-
c语言常见图片格式判断实例
我想尽各种思路.今天,终于把图片判断搞定了. 在此,我写一下我的思路.希望对那些不想看代码的朋友们有帮助. 常风的的图片格式有:bmp,png,jpg,gif等图片格式. 我用的方法是读取图片头文件中的标识符: 复制代码 代码如下: unsigned short BMP=0x4D42,JPG=0xD8FF,PNG[4]={0x5089,0x474E,0x0A0D,0x0A1A},GIF[3]={0x4947,0x3846,0x6139}; 你会发现,会一次读取n个字节的顺序不同:与用"okhi
-
C语言读取BMP图像数据的源码
复制代码 代码如下: /* File name: bmpTest.c Author: WanChuan XianSheng Date: Oct 01, 2011 Description: Show all Info a bmp file has. including FileHeader Info, InfoHeader Info and Data Part. Reference: BMP图像数据的C语言读取源码*/ #include <stdio
-
C++基于Directx MMX实现的图像灰度转换代码
本文实例讲述了基于Directx MMX 编写的实现图像灰度处理的方法,要编译此程序需DirectX SDK5.0,代码中所需要的ddutil.h与ddutil.cpp文件,请自行下载加入工程.在WindowNT4.0+SP3环境中编译通过,代码已经过整理,包含有注释.如下所示: #include <windows.h> #include <windowsx.h> #include <stdio.h> #include <ddraw.h> #include
-
C语言实现的bitmap位图代码分享
事实上,我们是用每一个 元素表示一个32位的二进制字符串,这样这个元素可以保留相邻32个号码是否存在的信息,数组范围就下降到10000000/32了.例如对于号码 89256,由于89256 mod 32=2789-8,这样我们应该置a[2789]中32位字符串的第8位(从低位数起)为1. #define WORD 32 #define SHIFT 5 ////移动5个位,左移则相当于乘以32,右移相当于除以32取整 #define MASK 0x1F //16进制下的31 #define N
-
Java语言实现Blowfish加密算法完整代码分享
前几天网上突然出现流言:某东发生数据泄露12G,最终某东在一篇声明中没有否认,还算是勉强承认了吧,这件事对于一般人有什么影响.应该怎么做已经有一堆人说了,所以就不凑热闹了,咱来点对程序猿来说实际点的,说一个个人认为目前比较安全的加密算法:Blowfish. 上代码之前,先说几点Blowfish加密算法的特点: 1. 对称加密,即加密的密钥和解密的密钥是相同的: 2. 每次加密之后的结果是不同的(这也是老夫比较欣赏的一点): 3. 可逆的,和老夫之前的文章介绍的md5等摘要算法不一样,他是可逆的:
-
GO语言实现文件上传代码分享
功能很简单,代码也很简洁,这里就不多废话了. 复制代码 代码如下: package main import ( "fmt" "io" "net/http" "os" ) const ( upload_path string = "./upload/" ) func helloHandle(w http.ResponseWriter, r *http.Request)
-
C语言完美实现动态数组代码分享
我们知道,C语言中的数组大小是固定的,定义的时候必须要给一个常量值,不能是变量. 这带来了很大的不便,如果数组过小,不能容下所有数组,如果过大,浪费资源. 请实现一个简单的动态数组,能够随时改变大小,不会溢出,也不会浪费内存空间. 下面的代码实现了简单的动态数组: #include <stdio.h> #include <stdlib.h> int main() { //从控制台获取初始数组大小 int N; int *a; int i; printf("Input ar
-
C语言实现的猜拳游戏代码分享
这是一个简单的猜拳游戏(剪子包子锤),让你与电脑对决.你出的拳头由你自己决定,电脑则随机出拳,最后判断胜负. 下面的代码会实现一个猜拳游戏,让你与电脑对决.你出的拳头由你自己决定,电脑则随机出拳,最后判断胜负. 启动程序后,让用户出拳,截图: 用户出拳,显示对决结果:截图: 代码实现: #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { char gamer; // 玩家出拳 int
-
C语言对对碰游戏源码分享
本文实例为大家分享了C语言对对碰游戏的具体代码,供大家参考,具体内容如下 //////////////////////////////////////// //画素材的x和y都是反的,因为x表示行,但是画出来x表示列,y同 //////////////////////////////////////// #include <graphics.h> #include <fstream> #include <strstream> #include <iomanip&g
-
C语言实现的学生选课系统代码分享
好久没玩过C语言了,上一次还是在大二的时候...废话不多说,这里有一个C语言实现的学生选课系统代码,分享给大家,具体如下: #include<stdio.h> #include<stdlib.h> int N1,N2,kk1,kk2,kk3; struct couse * head1; struct student * head2; struct couse//课程信息结构体 { int num1; char name1[20]; int score; int nelepeo; /
-
Java语言实现二叉堆的打印代码分享
二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树).二叉堆有两种:最大堆和最小堆.最大堆:父结点的键值总是大于或等于任何一个子节点的键值:最小堆:父结点的键值总是小于或等于任何一个子节点的键值. 打印二叉堆:利用层级关系 我这里是先将堆排序,然后在sort里执行了打印堆的方法printAsTree() public class MaxHeap<T extends Comparable<? super T>> { private T[] data; pr
-
Java语言实现基数排序代码分享
算法思想:依次按个位.十位...来排序,每一个pos都有分配过程和收集过程,array[i][0]记录第i行数据的个数. package sorting; /** * 基数排序 * 平均O(d(n+r)),最好O(d(n+r)),最坏O(d(n+r));空间复杂度O(n+r);稳定;较复杂 * d为位数,r为分配后链表的个数 * @author zeng * */ public class RadixSort { //pos=1表示个位,pos=2表示十位 public static int g
-
C语言实现简易通讯录(静态版本)的代码分享
目录 一.通讯录 1.演示效果 2.完整代码 二.代码解析 1.宏定义及结构体声明 2.主菜单函数 3.主函数 4.查找函数 5.初始化联系人信息 6.添加联系人信息 7.显示所有联系人信息 8.删除指定联系人信息 9.修改联系人信息 10.查找指定联系人 11.按照姓氏对联系人信息排序 12.清空所有联系人信息 一.通讯录 1.演示效果 2.完整代码 #define _CRT_SECURE_NO_WARNINGS 1 //#include "ConTacts.h" #include
随机推荐
- shell生成简单格式的xml实例
- jQuery中scrollLeft()方法用法实例
- 如何实现从照片中裁切自已的肖像呢?
- 快速把硬盘分成四个区的图解_图解硬盘分区
- 常用字符集编码详解(ASCII GB2312 GBK GB18030 unicode UTF-8)
- GSON实现Java对象与JSON格式对象相互转换的完全教程
- iOS利用AFNetworking3.0——实现文件断点下载
- js-FCC算法-No repeats please字符串的全排列(详解)
- jsp 编程之@WebServlet详解
- Android中Fragmen首选项使用自定义的ListPreference的方法
- MySQL实现创建存储过程并循环添加记录的方法
- Javascript排序算法之计数排序的实例
- Bootstrap3学习笔记(三)之表格
- js使下拉列表框可编辑不止是选择
- java中字符串转整数及MyAtoi方法的实现
- jquery插件Jplayer使用方法简析
- jQuery中 attr() 方法使用小结
- Firefox中使用outerHTML的2种解决方法
- Android RecyclerView 实现快速滚动的示例代码
- Android中TextureView与SurfaceView用法区别总结