ZZOOOJJJ
ZZZZOOOOOJJJ
ZOOOJJ
E
ZOJZOJOJ
ZOJZOJZOJZOO
ZOJOJO
#include<stdio.h> #include<string.h> int main(){ int i,ZCount,OCount,JCount; char string[1000]; //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin); while(scanf("%s",string) != EOF && strcmp(string,"E") != 0){ ZCount = 0,OCount = 0,JCount = 0; //统计ZOJ字符的个数 for(i = 0;i < strlen(string);i++){ if(string[i] == 'Z'){ ZCount ++; } else if(string[i] == 'O'){ OCount ++; } else if(string[i] == 'J'){ JCount ++; } } //按ZOJ的顺序输出 for(i = 0;i < ZCount || i < OCount || i < JCount;i++){ if(i < ZCount){ printf("Z"); } if(i < OCount){ printf("O"); } if(i < JCount){ printf("J"); } } printf("\n"); } }
3 1
2 5 -1
5 3
1 2 3 4 5
0 0
5
5 4 3
#include<iostream> #include<cstdio> #include<stdlib.h> using namespace std; int cmp(const void* a,const void*b) { return *(int*)a<*(int*)b; } int main() { int a[100010]; int n,m; while(cin>>n>>m&&(n||m)) { for(int i=0;i<n;i++) { cin>>a[i]; } qsort(a,n,sizeof(a[0]),cmp);//是c语言的库函数,stl是C++的库函数。。。 if(n<m) { for(int i=0;i<n;i++) { if(i!=n-1) cout<<a[i]<<" "; else cout<<a[i]<<endl; } } else { for(int i=0;i<m;i++) { if(i!=m-1) cout<<a[i]<<" "; else cout<<a[i]<<endl; } } } return 0; }
3 2
ABC
CDE
EFG
FA
BE
0 0
great-grandparent
-
//第一反应就是并查集思想,计算两个人相差的代数然后输出结果 #include<iostream> using namespace std; int child[100];//存储孩子 int find(int a,int b)//前面的看做长辈,后面的看做晚辈 { int r=1;//一代 while(child[a]!=-1) //a有孩子 { if(child[a]==b)//如果b是a的孩子 return r;//直接返回一代 a=child[a];//将a的孩子赋值过来,进行迭代,看看到底二者相差多少代。 r++; } return -1; } int main() { int n,m,a,b,c,t; char s[90]; while(cin>>n>>m&&(n||m)) { for(int i=0;i<n;i++) child[i]=-1;//初始化每个人都没有孩子 while(n--) { cin>>s; a=s[0]-'A'; b=s[1]-'A'; c=s[2]-'A'; child[b]=child[c]=a;//b和c的孩子是a } while(m--) { cin>>s; a=find(s[0]-'A',s[1]-'A'); //寻找两者相差的代数,因为不知道那个是长辈,所以两个都调用find函数 b=find(s[1]-'A',s[0]-'A'); t=a>b?a:b;//取二者最大,但不知道谁大谁小,所以后面还要判断 if(t<0) cout<<"-"<<endl; else { while(t>2) { cout<<"great-"; t--; } if(t==2) { cout<<"grand"; t--; } if(t==1) { if(a>b) cout<<"parent"<<endl; else cout<<"child"<<endl; } } } } return 0; }