编程艺术五 HASH表 0-1背包
来源:互联网 发布:大富豪3.4.1最新源码 编辑:程序博客网 时间:2024/05/16 07:45
题目出处http://blog.csdn.net/v_JULY_v/article/details/6419466
O(N)时间复杂度 HASH表的用处得以体现
// FindSum.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "stdio.h"#define N 6#define M 1000int array[N]={1,2,4,7,11,15};int hash[M];int main(int argc, char* argv[]){int pos;int i;for(i = 0; i < N; i++) //构建hash表{pos = array[i] % M;hash[pos]++;}int n;scanf("%d", &n);for(i = 0; i < N; i++){pos = (n - array[i]) % M;if (hash[pos]){if (pos == array[i] && hash[pos] > 1){printf("%d %d", array[i], pos);break;}else if (pos != array[i]){printf("%d %d", array[i], pos);break;}}}return 0;}
二.2010年中兴面试题
编程求解:
输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,
使其和等于 m ,要求将其中所有的可能组合列出来。
#include "stdio.h"int n;int m;int array[1000]={0};void Print(){int flag = 0;for(int i = 1; i < n; i++){if (!flag && array[i]){printf("%d",i);flag = 1;}else if (array[i])printf("+%d",i);}printf("\n",i);}void FindSum(int num, int sum)//m是当前的数,sum是和{if (num > n || sum > m)return;if (sum == m){Print();return;}array[num] = 1;FindSum(num+1, sum+num); //取marray[num] = 0;FindSum(num+1, sum); //不取m}void main(){printf("n:");scanf("%d", &n);printf("m:");scanf("%d", &m);FindSum(1, 0);}
0 0
- 编程艺术五 HASH表 0-1背包
- 读书笔记《Unix编程艺术》五
- javascript_DOM 编程艺术学习笔记(五)
- javascript之Dom编程艺术五
- 《DOM编程艺术》五、动态创建标记
- Javascript Dom编程艺术读书笔记(五)
- 学习《Oracle 9i10g编程艺术》的笔记 (五)
- JavaScript DOM编程艺术 学习笔记(五)最佳实践
- Java并发编程的艺术(五)——中断
- 读书小记——Javascript DOM编程艺术(五)
- java并发编程的艺术(五)-----线程状态
- UNIX编程艺术-读书笔记(1)
- 《oracle编程艺术》读后感1
- 《Unix编程艺术》读书笔记(1)
- 1、并发编程的艺术
- 编程艺术
- 艺术编程
- 编程艺术
- hdu 1452 Happy 2004
- xode5.1.1设置IOS欢迎界面的方法
- DB2客户端,增加查看节点和数据库编目
- 机房收费系统之无效使用Null值
- 贝叶斯后验定理与预测(信号与噪声读书笔记)
- 编程艺术五 HASH表 0-1背包
- linux下编译器gcc/g++编译步骤
- maven Error occurred during initialization of VM
- 你不可不知的JSON
- java代码 解析EXCEL(六)
- HDU 1325 Is It A Tree?
- 读取相册的方向值
- GetTextMetrics 和 GetTextExtent用法的区别
- 1429 胜利大逃亡( 续 ) hdu