经典算法
@听风!
这个作者很懒,什么都没留下…
展开
-
2021-02-27
约瑟夫问题 时间限制: 1 Sec 内存限制: 256 MB 题目描述 n个人围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再次出圈,以此类推,知道所有人都出圈,请输出一次出圈人的编号。 输入 输入存在多组测试数据,每组测试数据输入两个正整数n,m(1<=n,m<=100) 输出 对于每组测试数据,输出一行n个整数,按顺序输出每个出圈人的编号。 样例输入 10 3 样例输出 3 6 9 2 7 1 8 5 10 4 #include <iostre原创 2021-02-27 10:01:04 · 88 阅读 · 0 评论 -
2021-01-21
插入排序 #include <iostream> using namespace std; void InsertSort(int a[],int n){ int tmp,i,j; for( i=1;i<n;i++){ tmp=a[i]; j=i-1; while(j>=0&&tmp<a[j]){ a[j+1]=a[j]; j--; } a[j+1]=tmp; } } int main(){ int n; cin>原创 2021-01-21 21:51:05 · 60 阅读 · 0 评论 -
2021-01-21
选择排序 #include <iostream> using namespace std; int SelectSort(int a[],int n){ for(int i=0;i<n;i++){ int k=i; for(int j=i+1;j<n;j++){ if(a[k]>a[j]){ k=j; } } int tmp=a[i]; a[i]=a[k]; a[k]=tmp; } } int main(){ int n; c原创 2021-01-21 21:50:00 · 56 阅读 · 0 评论 -
2021-01-21
冒泡排序 #include <iostream> using namespace std; void BubbleSort(int a[],int n){ int tmp; for(int i=0;i<n-1;i++){//共进行n-1趟 for(int j=0;j<n-i-1;j++){//在第i趟起泡 if(a[j]>a[j+1]){ tmp=a[j]; a[j]=a[j+1]; a[j+1]=tmp; } } } } i原创 2021-01-21 11:17:07 · 52 阅读 · 0 评论 -
2021-01-19
快速排序 #include <iostream> using namespace std; int Parition(int a[],int s,int t){ int i=s,j=t; int tmp=a[s];//将第一个数作为基准数 while(i!=j){ while(j>i&&a[j]>tmp){ j--; } a[i]=a[j]; while(i<j&&a[i]<tmp){ i++; }原创 2021-01-19 11:53:48 · 43 阅读 · 0 评论 -
2021-01-17
最大连续子数组 题目描述 给定一个数组A[0,…,n-1],求A的连续子数组,使得该子数组的和最大,以及该子数组的和。 输入样例: 8 1,-2,3,10,-4,7,2,-5 输出样例: 3,10,-4,7,2 18 #include <iostream> using namespace std; int main(){ int max,sum; int t1,t2; int n; cin>>n; int a[n]; for(int i=0;i<n;i++){原创 2021-01-17 09:22:20 · 87 阅读 · 0 评论