三九宝宝网宝宝教育教学论文

C语言用数组存储大型数据的算法

01月08日 编辑 39baobao.com

[c语言编程动态数组]#include<stdio.h> #include<stdlib.h> void ave(int *p) { int i; double num=0.0; printf("20岁以下的有:"); for(i=0;i<10;i++,p++) { num+=(*p); if(*p<=20) printf("%d ",*p)...+阅读

楼主一定懂c++吧?c++标准库里面有一个模板类叫

bitset<>

专门用来做位操作的。

你的问题用这个可以高效的解决,建立一个足够大的空间,比如8000个位

bitset<8000>

然后就简单了,乘法函数把乘数转化成bitset<32>;类型的对象(用乘数直接初始化代表乘数的bitset<32>;对象)然后用位运算符把被乘数(那个bitset<8000>;类型的对象)按位右移,(一个10进制数右移一次相当于乘10,一个2进制数右移一次相当于乘2;乘数中,二进制位如果知道它是从右数第n位,那么就把被乘数向右移动n-1位就完成了乘法,然后再做下一个二进制位的乘法,直到被乘数中所有的2进制位都被使用过为止)。做完了每32位2进制位转化成一个unsigned long,存储在一个链表或者数组(怀疑空间不够,内存里很有可能没有这么大的连续空间)中,如果按顺序逐个输出就是问题的结果。

我觉得这个方法比2楼的高效。

如果你不想使用c++标准库……那也可以考虑用c中的位域,也支持位操作。不过远没有前面的方便,很多操作都要自己做,比如最基本的你必须有一个适合乘法操作的动态增长的位域组成的链表。而且即使这样还不一定高效。

……写完了才看的3楼,3楼就做得很好了。

以下为关联文档:

用C编写动态数组#include<iostream> #include<vector> using namespace std; int main() { int len; cin>>len; vector<int> arr(len); for(int i=0 ; i< len ; i++ ) arr[i]=i; for(i=0 ;...

c语言怎样得到一个动态数组#include #include int main() { int num,*p=0,i; printf("输入数组元素个数:"); /*输入数组元素个数,保存到变量num中*/ scanf("%d",&num); /*动态分配数组存储空间*/ p = (int *)ma...

C语言动态数组数组案例#include #include int main() { int*n,*p; int i; n=(int*)calloc(1,sizeof(int)); for(i=0;i{ n[i]=i+1; printf(%d\t,n[i]); p=(int*)realloc(n,(i+2)*sizeof(int));//动态...

C语言如何定义动态数组360问答 C语言中怎样定义动态一维数组 ruisiteng LV12 2013-09-08 用calloc或者malloc做。 因为 int n; int a[n]; 这个操作是不合法的,, 所以要用到分配内存的函数,, 请各位大虾...

C语言冒泡排序算法要用函数从小到大排序 void paixu(double a[],int N) { double temp; int i,j; for(i=0;i<N;i++) { for(j=i+1;j<N-i;j++) { if(a[i]>a[j]) {temp=a[i];a[i]=a[j];a[j]=temp;} } } }...

在易语言里怎样取出两个或几个数组中相同的数.版本 2 .程序集 主窗集, , , 面向人 .子程序 _你_被单击 ' 删除重复行 ()‘^ω^这个也可以用,挺方便的 取不相同行 () .子程序 删除重复行 .局部变量 金, 文本型 .局部变量 割组, 文...

C语言中哪个库函数可以找出数组中出现频率最高的数字没有,只能自己定义函数: int maxinum(int arr[],int arr_length) { int maxi=*arr; for (int i=1;i<arr_length;i++) if (maxi<arr[i]) maxi=arr[i]; return maxi; } 不好意思...

易语言数组排列算法.版本 2 .程序集 窗口程序集_启动窗口 .子程序 _按钮1_被单击 .局部变量 a, 整数型, , "5" a = { 1, 2, 3, 4, 5 } 排列 (a, 3) .子程序 排列 .参数 a, 整数型, 数组 .参数 n, 整数型...

C语言数据分组的算法如果你是希望通过输入来确定b的个数,又不想多申请空间,那就是动态数组的声明了,能够实现。 首先输入n,表示要输入的b[]的元素个数,在通过这个语句: int *b= (int*)malloc(n*sizeof...

推荐阅读
图文推荐