简单算法入门
来源:互联网 发布:Ai人工智能武汉 编辑:程序博客网 时间:2024/06/03 04:10
筛选列举质数
#include <cstdio>int main() { int n = 15; int mark[16] = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int c; int j; for (c = 2; c * c <= n; c++) { if ( mark[c] != 1){ for ( j = 2; j <= n/c; j++){ mark[c*j] = 1; } } } for ( c = 2; c <= n; c++){ if ( mark[c] != 1) { printf("%d\n", c); } } return 0;}
指定范围的质数
#include <cstdio>#include <cstring>#include <iostream>using namespace std;int n = 1000000;int mark[1000001];int main() { memset(mark, 0, sizeof(mark)); mark[0] = 1; mark[1] = 1; int c; for (c = 2; c * c <= n; c++) { if (mark[c] != 1) { for (int j = 2; j <= n/c; j++) { mark[c * j] = 1; } } } int N,M; while (cin >> N >> M) { for (c = M; c <= N; ++c) { if (mark[c] != 1) { cout << c << endl; } } } return 0;}
线性查找
#include <cstdio>#include <cmath>void find_nine(int numbers[]) { int i; for (i = 0; i < 15; i++){ if (numbers[i] == 9){ printf("%d\n",i); return; } } printf("null");}int main() { int numbers[15]; int i; for (i = 0; i < 15; i++) { scanf("%d", &numbers[i]); } find_nine(numbers); return 0;}
折半查找
伪代码:
function BinarySearch(List, key) left = 0, right = List.length - 1 while left <= right mid = (left + right) / 2 if List[mid] is key return mid if List[mid] < key left = mid + 1 else right = mid - 1 return -1
#include <cstdio>#include <iostream>using namespace std;int main() { int n; int k; int numbers[1000001]; int m; int i; // 反复读入数字和查找数字的数量 while (scanf("%d %d", &n, &k) != EOF) { // 读入给定的数字 for (i = 0; i < n; i++) { scanf("%d", &numbers[i]); } for (int j = 0; j < k; j++) { // 读入待查找的数字, scanf("%d", &m); // 请在下面完成查找读入数字的功能 int left = 0, right = n - 1; int mid; while (left <= right) { mid = (left + right) / 2; if (numbers[mid] == m && j == 0) { cout << mid + 1 ; break; } if (numbers[mid] == m && j != 0) { cout << " " << mid + 1 ; break; } if (numbers[mid] > m) { right = mid - 1; } else { left = mid + 1; } } if (left > right && j == 0) { cout << "0" ; } if (left > right && j != 0) { cout << " " << "0" ; } } } return 0;}
递推数组
斐波拉契数列
炊饼问题
#include <cstdio>int main() { int x = 100; int i; int part[101]; part[0] = 1; for (i = 1; i <= x; i++) { part[i] = part[i - 1] + i; } printf("There are %d parts after 100 cuts\n", part[x]); return 0;}
爬楼梯
#include <cstdio>#include <iostream>using namespace std;int main() { int n; int step[50]; step[0] = 0, step[1] = 1, step[2] = 1; for(int i = 3; i <= 49; ++i){ step[i] = step[i - 2] + step[i - 3]; } // 反复读入数字和查找数字的数量 while (scanf("%d", &n) != EOF) { // 读入给定的数字 printf("%d\n",step[n - 1]); } return 0;}
冒泡排序与选择排序
//BubbleSort#include <cstdio>int main() { int n = 10; int m; int num[10]; int i; // 读入给定的数字 for (i = 0; i < n; i++) { scanf("%d", &num[i]); } for (int j = 0; j < 9; j++) { for (i = 0; i < 9 - j; i++) { if(num[i] < num[i + 1]){ int k = num[i]; num[i] = num[i + 1]; num[i + 1] = k; } } } for(int i = 0; i < 9; ++i){ printf("%d ",num[i]); } printf("%d",num[9]); return 0;}
//SelectSort#include <cstdio>int main() { int n = 10; int num[10]; // 读入给定的数字 for (int i = 0; i < n; i++) { scanf("%d", &num[i]); } for (int i = 0; i < 9; i++) { int m = num[i]; int k = i; for (int j = i + 1 ; j < 10; j++) { if(num[j] > m){ m = num[j]; k = j; } } num[k] = num[i]; num[i] = m; } for(int i = 0; i < 9; ++i){ printf("%d ",num[i]); } printf("%d",num[9]); return 0;}
阅读全文
0 0
- 【算法入门】简单练习
- 遗传算法简单入门
- paxos算法简单入门
- 简单算法入门
- 遗传算法入门简单实例
- 排序算法入门之简单选择排序
- EM算法入门及简单应用举例
- 排序算法入门之简单选择排序
- 分治算法——入门简单实例
- 排序算法入门之简单选择排序
- C#编程入门_简单算法_15
- C#编程入门15_简单算法
- 算法竞赛入门经典读书笔记(二)7.1简单枚举
- 算法竞赛入门经典 习题3-4简单计算器
- 算法竞赛入门经典读书笔记(二)7.1简单枚举
- 协同过滤算法python实现简单入门详细注释
- 基于矩阵分解的推荐算法,简单入门
- 基于矩阵分解的推荐算法,简单入门
- POI的HSSFCell
- Codeforces Round #436 (Div. 2) C. Bus
- 微信全文搜索优化之路
- Curator-Framework开源Zookeeper快速开发框架介绍
- HTML 跳出框架 邮件链接
- 简单算法入门
- 如何入门爬虫
- linux和宿主机windows之间建立共享文件夹
- Elasticsearch之分布式搜索的执行方式
- springboot动态配置定时任务2种方式,整合Quartz多线程并发执行多个定时任务配置
- [软件工程] 软件开发方式与迭代
- c++中字符数组与字符串的转换
- 数据结构转换 协议的转换
- html中form表单的使用方法和介绍