讨论 / 只过了6个点??
wjcwjc 2012-07-14 05:33:00
点我顶贴 收藏 删除
#include<stdio.h>

int main()

{

int i,j,n,m,k,a[1001][11],p[1001]={0},f[1001]={0},x[1001]={0},t,t1,t2;

scanf("%d %d %d",&n,&m,&k);

for(i=1;i<=n;i++)

{

for(j=1;j<=k;j++)

{

scanf("%d",&a[i][j]);

p[i]=p[i]+a[i][j];

f[i]=f[i]+a[i][j]*a[i][j];

}

p[i]=(int)p[i]/k;

f[i]=f[i]+n*p[i]*p[i];

f[i]=(int)f[i]/n;

x[i]=i;

}

for(i=1;i<=n-1;i++)

{

for(j=1;j<=n-i;j++)

{

if(p[j]<p[j+1])

{

t=p[j];

p[j]=p[j+1];

p[j+1]=t;

t1=f[j];

f[j]=f[j+1];

f[j+1]=t1;

t2=x[j];

x[j]=x[j+1];

x[j+1]=t2;

}

else if(p[j]==p[j+1]&&f[j]>f[j+1])

{

t=p[j];

p[j]=p[j+1];

p[j+1]=t;

t1=f[j];

f[j]=f[j+1];

f[j+1]=t1;

t2=x[j];

x[j]=x[j+1];

x[j+1]=t2;

}

else if(p[j]==p[j+1]&&f[j]==f[j+1]&&x[j]>x[j+1])

{

t=p[j];

p[j]=p[j+1];

p[j+1]=t;

t1=f[j];

f[j]=f[j+1];

f[j+1]=t1;

t2=x[j];

x[j]=x[j+1];

x[j+1]=t2;

}

}

}

for(i=1;i<=m;i++)

{

printf("%d ",x[i]);

}

getchar();

getchar();

}

#1 lyl610@2015-10-21 03:13:22
回复 删除
var

a,x,s:array[1..1000]of longint;

i,j,m,n,k,l:longint;

b,t,c,ll:extended;

begin

readln(n,m,k);

for i:=1 to n do

begin

c:=0;t:=0;

for j:=1 to k do

begin

read(ll);

c:=c+ll;

t:=t+sqr(ll);

end;

b:=trunc(c/k);

a[i]:=i;x[i]:=trunc(b);

s[i]:=trunc((t-n*sqr(x[i]))/n);

end;

for i:=1 to n do

for j:=1 to n-1 do

if (x[j]<x[j+1])or((x[j]=x[j+1])and(s[j]>s[j+1]))or((x[j]=x[j+1])and(s[j]=s[j+1])and(a[j]>a[j+1])) then

begin

l:=x[j];x[j]:=x[j+1];x[j+1]:=l;

l:=s[j];s[j]:=s[j+1];s[j+1]:=l;

l:=a[j];a[j]:=a[j+1];a[j+1]:=l;

end;

for i:=1 to m do

write(a[i],' ');

end.

同6个点

查看更多回复
提交回复