程序设计题accept代码
文章平均质量分 55
liuqingzh
从来不缺从头再来的勇气
展开
-
**第八周 acm刷题总结 区间DP**
关于区间DP还有好多问题没有解决,先把解决了的总结一下:区间DP的模板代码: 我习惯先枚举区间长度,再枚举起点终点,然后枚举分割点。//遍历阶段:枚举区间长度,本例枚举的不是坐标差,是区间内点的个数for (int len = 2; len <= n; len++) { //遍历每个阶段的状态:枚举起止点,起点先减去1,回到没有点的状态,然后加上点的个数,就是终点的位置,比写成i + len - 1 更友好。 for (int i = 1, j; (j = i - 1 + len) <原创 2021-04-26 02:18:09 · 133 阅读 · 0 评论 -
**第四、五周 acm刷题总结 线性DP**
学习DP是前所未有的挑战。 今天对动态规划有了新的认识。之前认为它是一个采集更优解的过程,是太片面了。 今天遇到一个题,发现更优解不是动规采集的,动规本质上只是把每一个子状态存下来而 已。以前说起动态规划就想到背包,并且很多都能把那一套理论套上,现在发现更加通用 的理解方式,应该是递推。就找到子状态和递推方式就好了。 今天遇到的题是雇佣工人的问题,告诉工程持续的...原创 2021-04-14 04:23:15 · 502 阅读 · 1 评论 -
蛇形填充数组 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 用数字1,2,3,4,...,n*n这n2个数蛇形填充规模为n*n的方阵。 蛇形填充方法为: 对
#include using namespace std;int main(){int n, a[10][10], t = 1;//t从1开始,用t++填充数组。int k, i;cin >> n;//输入正方形二维数组的边长for (k = 0; k < n; k++)//在左上区域的一半图形中,横纵坐标之和等于k,不同方向表现为交换横纵下标。{if (k % 2 != 0)//下标从0开始数的,所以此处k表示从左上角往右和下两个正交方向第偶数个位置的某个单方向下标。原创 2020-12-24 12:58:47 · 1648 阅读 · 0 评论 -
因子 查看 提交 统计 提问 总时间限制: 8000ms 内存限制: 65536kB 描述 输入1个整数n。从小到大依次输出n的所有因子。 输入 1个整数n(n<20亿) 输出 升序输出n的所有因子
#includeusing namespace std;int main(){int n, count = 0, arr[60], a = 0;cin >> n;for (int i=2;i*i<=n;i++)if (n % i == 0){cout << i << ’ ';if (i!=n/i)arr[a++] = n / i;count++;}for (; a; a–){cout << arr[a - 1] <&原创 2020-12-03 11:05:56 · 722 阅读 · 0 评论 -
验证哥德巴赫猜想
#include using namespace std;double lerangde(double x,int n){if (n == 0)return 1;if (n == 1)return x;if (n > 1);return ((2 * n - 1) * x * lerangde(x, n - 1) - (n - 1) * lerangde(x, n - 2)) / n;}int main(){double x;int n;cin >> x >原创 2020-12-03 11:02:11 · 134 阅读 · 0 评论 -
05:验证歌德巴赫猜想 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 32767kB 描述 验证“歌德巴赫猜想”,即:任意一个大于2的偶数均可表示成两个素数之和。 输入 输入只有一
#includeusing namespace std;bool Scan(int n){if (n % 2 == 0)return false;else for (int i = 3; i * i <= n; i += 2)if (n % i == 0)return false;return true;}int main(void){int x;cin >> x;for (int i = 2; i <= x / 2; i++)if (Scan(i)原创 2020-12-03 01:26:43 · 371 阅读 · 0 评论 -
03:因子 查看 提交 统计 提问 总时间限制: 8000ms 内存限制: 65536kB 描述 输入1个整数n。从小到大依次输出n的所有因子。 输入 1个整数n(n<20亿) 输出 升序输出n的所
#includeusing namespace std;int main(){int n, count = 0, arr[60], a = 0;cin >> n;for (int i=2;i*i<=n;i++)if (n % i == 0){cout << i << ’ ';if (i!=n/i)arr[a++] = n / i;count++;}for (; a; a–){cout << arr[a - 1] <&原创 2020-12-03 01:25:28 · 639 阅读 · 0 评论 -
美丽数字 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 10240kB 描述 Alice很喜欢6这个数字,如果一个整数能被6整除或者它的任何一位包含6就被认为是美丽数字,输入为一个整
#include using namespace std;int main(){int a, count = 0;cin >> a;for (int i = 6; i <= a; i++){if (i % 6 == 0){cout << i << endl;count++;}elsefor (int i1 = i; i1; i1 /= 10)if (i1 % 10 == 6){count++;cout << i <原创 2020-12-03 01:24:17 · 1754 阅读 · 0 评论 -
12:变幻的矩阵 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 有一个N x N(N为奇数,且1 <= N <= 10)的矩阵,矩阵中的元素都是字符。这个矩阵可
#includeusing namespace std;int main(){int N, i, j, one = 1, two = 1, three = 1, four = 1;char a[10][10], b[10][10];cin >> N;for (i = 0; i < N; i++)for (j = 0; j < N; j++)cin >> a[i][j];for (i = 0; i < N; i++)for (j = 0; j &原创 2020-11-29 23:19:36 · 1635 阅读 · 0 评论 -
菲波那契数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 51737 通过数: 26371 【题目描述】 菲波那契数列是指这样的数列: 数列的第一个和
#include<stdio.h>int main(){int k, a[46], jieguo;a[0] = a[1] = 1;scanf("%d",&k);for (int i = 2; i < k; i++)a[i] = a[i - 1] + a[i - 2];if (k == 1 || k == 2)jieguo = 1;else jieguo = a[k - 1];printf("%d\n", jieguo);return 0;}原创 2020-11-20 00:39:33 · 2626 阅读 · 0 评论 -
人口增长 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 33153 通过数: 22753 【题目描述】 我国现有x亿人口,按照每年0.1%的增长速度,
#include<stdio.h>#includeint main(){double x, n, count;scanf("%lf %lf", &x, &n);count = x * pow((1 + 0.001), n);printf("%0.4lf", count);return 0;}原创 2020-11-19 23:55:29 · 1848 阅读 · 0 评论 -
与指定数字相同的数的个数 输出一个整数序列中与指定数字相同的数的个数。输入包含2行:第1行为N和m,表示整数序列的长度(N≤100)和指定的数字;第2行为N个整数,整数之间以一个空格分开。输出为N
#include<stdio.h>int main(){int N, m, a[500], count = 0;scanf("%d %d", &N, &m);for (int i = 0; i < N; i++){scanf("%d",&a[i]);if (a[i] == m)count++;}printf("%d", count);return 0;}原创 2020-11-19 23:29:10 · 4966 阅读 · 1 评论 -
数组逆序重放 查看提交统计提问 总时间限制: 1000ms 内存限制: 65536kB 描述 将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。 输入
#includeusing namespace std;int main (){int n,a[100];cin>>n;for (int i=0;i<n;i++) cin>>a[i];for (int i=n-1;i>=0;i--) cout<<a[i]<<' ';return 0;}原创 2020-11-19 11:21:59 · 2437 阅读 · 0 评论 -
矩阵交换行 查看提交统计提问 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个5*5的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列),将第n行和第m行交换,
#includeusing namespace std;int main (){int a[5][5],m,n;for (int i=0;i<5;i++)for (int j=0;j<5;j++)cin>>a[i][j];cin>>m>>n;for (int temp=0, j=0;j<5;j++){temp=a[m-1][j];a[m-1][j]=a[n-1][j];a[n-1][j]=temp;}for (int i=0原创 2020-11-19 11:04:02 · 2315 阅读 · 0 评论