7-28 猴子选大王 (20分)
https://pintia.cn/problem-sets/14/problems/808
题意:n个猴子围成圈,从1到3循环报数,为3就退出直到只剩最后一个猴子,输出该猴子初序;
思路:模拟题,数组存储,对数组1~3循环编号,同时k从1递增,逢4变1,数组编号逢3变0,同时计数值count--,直到count==1退出while循环,输出该值初序;
代码:
#include <cstdio> #include <iostream> #include <cmath> #include <algorithm> using namespace std; int main() { int array[1010]={0}; int n,i; int k=1; cin>>n; int count=n; for(i=1;i<=n;i++) array[i]=i; while(count>1) { for(i=1;i<=n;i++) { if(array[i]!=0){ array[i]=k; k++; } if(k==4) k=1; if(array[i]==3) { array[i]=0; count--; } } } for(i=1;i<=n;i++) { if(array[i]!=0) cout<<i<<endl; } return 0; }
7-30 字符串的冒泡排序 (20分)
https://pintia.cn/problem-sets/14/problems/810
代码:
#include <cstdio> #include <cstring> #include <string> #include <iostream> #include <algorithm> #include <cmath> using namespace std; int main() { int n,k; char chr[110][13]; char chr2[13]; //string chr[110]; int i,j; cin>>n>>k; for(i=0;i<n;i++) cin>>chr[i]; for(i=0;i<k;i++) { for(j=0;j<n-1;j++) { if(strcmp(chr[j],chr[j+1])>0) { strcpy(chr2,chr[j]); strcpy(chr[j],chr[j+1]); strcpy(chr[j+1],chr2); } } } for(i=0;i<n;i++) cout<<chr[i]<<endl; return 0; }