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语言常见图片格式判断实例
我想尽各种思路.今天,终于把图片判断搞定了. 在此,我写一下我的思路.希望对那些不想看代码的朋友们有帮助. 常风的的图片格式有:bmp,png,jpg,gif等图片格式. 我用的方法是读取图片头文件中的标识符: 复制代码 代码如下: unsigned short BMP=0x4D42,JPG=0xD8FF,PNG[4]={0x5089,0x474E,0x0A0D,0x0A1A},GIF[3]={0x4947,0x3846,0x6139}; 你会发现,会一次读取n个字节的顺序不同:与用"okhi
 - 
                             
                            
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图像数据的源码
复制代码 代码如下: /* 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语言位图算法详解
本文详细讲述了位图算法的定义与C语言实现方法,分享给大家供大家参考之用.具体如下: 位图法定义: 位图法就是bitmap的缩写,所谓bitmap,是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况.通常是用来判断某个数据存不存在的. 例如,要判断一千万个人的状态,每个人只有两种状态:男人,女人,可以用0,1表示.那么就可以开一个int数组,一个int有32个位,就可以表示32个人.操作的时候可以使用位操作. 数据结构: unsigned int bit[N]; 在这个数组
 - 
                             
                            
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++基于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++将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语言实现的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
 
随机推荐
- 了解redis中RDB结构_动力节点Java学院整理
 - java用split分割字符串的一个有趣现象
 - android用java动态增添删除修改布局
 - JSP简明教程
 - 找到MySQL的优点
 - 浅析php中抽象类和接口的概念以及区别
 - node.js中的path.resolve方法使用说明
 - PHP准确取得服务器IP地址的方法
 - shell 中数学计算总结
 - Jquery同辈元素选中/未选中效果的实例代码
 - 如何准确判断邮件地址是否存在
 - 解决Google Adsense广告只显示英文的问题
 - MySQL删除数据库的两种方法
 - quartz实现定时功能实例详解(servlet定时器配置方法)
 - shiro并发人数登录控制的实现代码
 - C# Dynamic关键字之:dynamic为什么比反射快的详解
 - python Crypto模块的安装与使用方法
 - 利用rpm打包上线部署golang代码的方法教程
 - 基于vue 动态加载图片src的解决方法
 - MongoDB诡异问题之sh.stopBalancer卡住的解决方法
 
