|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- /*集体照*/
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define LEN 10000
- struct ren
- {
- char name[9];
- int gao;
- };
- //由大到小排序
- int my_cmp(const void *a,const void *b)
- {
- struct ren *aa = (struct ren *)a;
- struct ren *bb = (struct ren *)b;
- if(aa->gao !=bb->gao)
- return bb->gao - aa->gao;//降序
- else
- return strcmp(aa->name,bb->name);//升序
- }
- int main(void)
- {
- int N,K;
- int i,j,k,m,n,mid;
- int sign = 1;
- struct ren a[LEN],b[LEN];
- scanf("%d %d",&N,&K);
- for(i=0;i<N;i++)
- {
- scanf("%s %d",&a[i].name,&a[i].gao);
- getchar();
- }
- qsort(a,N,sizeof(a[0]),my_cmp);
- m = N/K;//其他排的人数
- n = m+N%K;//最后一排的人数
- char p[100][100][10];//存放最后的结果
- for(i=0;i<K;i++)
- {
- if(i==0) mid = n/2;
- else mid = m/2;
- for(k=0,j=0;;k++)
- {
- if(i==0)
- if(k == n) break;
- else if(k == m) break;
- mid = mid+sign*k;
- strcpy(p[i][mid],a[j++].name);
- sign = -sign;
- }
- }
- //打印输出
- for(i=0;i<K;i++)
- {
- for(j=0;;j++)
- {
- if(i==0)
- {
- if(j==n) break;
- }
- else
- if(j == m) break;
- printf(j==0?"%s":" %s",p[i][j]);
- }
- putchar('\n');
- }
- return 0;
-
- }
-
复制代码 帮忙查一下BUG
没有看懂题意,我估计这个程序就只能实现这一个输入样例
- $ ./main
- 10 3
- Tom 188
- Mike 170
- Eva 168
- Tim 160
- Joe 190
- Ann 168
- Bob 175
- Nick 186
- Amy 160
- John 159
- Bob Tom Joe Nick
- Ann Mike Eva
- Tim Amy John
复制代码
下面这个应该不是你想要的
- $ ./main
- 7 3
- Tom 188
- Mike 170
- Eva 168
- Tim 160
- Joe 190
- Ann 168
- Bob 175
- Tom Joe Bob
- Ann Mike
- Tim Eva
复制代码
- /*集体照*/
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define LEN 10000
- struct ren
- {
- char name[9];
- int gao;
- };
- //由大到小排序
- int my_cmp(const void *a,const void *b)
- {
- struct ren *aa = (struct ren *)a;
- struct ren *bb = (struct ren *)b;
- if(aa->gao !=bb->gao)
- return bb->gao - aa->gao;//降序
- else
- return strcmp(aa->name,bb->name);//升序
- }
- int main(void)
- {
- int N,K;
- int i,j,k,m,n,mid;
- int sign;
- struct ren a[LEN] = {0};
- scanf("%d %d",&N,&K);
- for(i=0;i<N;i++)
- {
- scanf("%s %d",a[i].name,&a[i].gao);
- getchar();
- }
- qsort(a,N,sizeof(a[0]),my_cmp);
- m = N/K;//其他排的人数
- n = m+N%K;//最后一排的人数
- char p[100][100][10];//存放最后的结果
- j = 0;
- for(i=0;i<K;i++)
- {
- sign = 1;
- if(i==0) mid = n/2;
- else mid = m/2;
- for(k=0;;k++)
- {
- if(i==0) {
- if(k == n) break;
- } else if(k == m) break;
- mid = mid+sign*k;
- strcpy(p[i][mid],a[j++].name);
- sign = -sign;
- }
- }
- //打印输出
- for(i=0;i<K;i++)
- {
- for(j=0;;j++)
- {
- if(i==0)
- {
- if(j==n) break;
- }
- else
- if(j == m) break;
- printf(j==0?"%s":" %s",p[i][j]);
- }
- putchar('\n');
- }
- return 0;
- }
复制代码
|
|