题目:
为什么我的代码和题解的代码,没有什么不同的地方,但是我的代码一个测试点都通不过?
题解代码:
#include
#include
#include
int pp(long long int a[],int low,int high)
{
int n = high;long long int m;
m=a[low];//用第一个记录做中间
while(lowwhile(low=m) --high;//如果high指针位置>=中间数,直到high位置<中间
a[low]=a[high];//因为上面循环high指针位置<中间,所以把high位置放到low位置
while (low//如果low指针位置<=中间数,直到high位置>中间
a[high]=a[low];
}
a[low]=m;
return low;
}
int p;
void Qsort(long long int a[],int low,int high)
{
if(lowpp(a,low,high);
Qsort(a,low,p-1);
Qsort(a,p+1,high);
}
}
int main(int argc, char *argv[])
{
// 请在此输入您的代码
int n,i;double k,avg1,avg,sum=0.0;
long long a[500010];
scanf("%d %lf",&n,&k);
for(i=0;iscanf("%lld",a+i);
}
avg1=avg=1.0*k/n;
Qsort(a,0,n-1);
for(i = 0 ; i < n ; i++)
if( a[i] * (n-i) < k )
{
sum+=(a[i]-avg1)*(a[i]-avg1);
k-=a[i];
}
else
{
avg=k/(n-i);
sum+=(avg-avg1)*(avg-avg1)*(n-i);
break;
}
sum=sqrt(sum/n);
printf("%.4lf",sum);
return 0;
}
我的代码:
#include
#include
#include
long long a[500010];
int compare(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int n,i;
double s;
double sum=0.0;//这个sum求的是方差
scanf("%d%lf",&n,&s);
for(i=0;iscanf("%d",&a[i]);
}
int size=sizeof(a)/sizeof(a[0]);
qsort(a,size,sizeof(a[0]),compare);
double ave=1.0*s/n;
for(i=0;i//if和else同时也划分了前半段和后半段
if(a[i]*(n-i)else
{
double nave=s*1.0/(n-i); //注意:这里的i是新加过的,这个是新的平均数,用小数保证精度不会丢失,而且个数要改变,前面的人全出,后面的人肯定都是出得起的
sum+=(nave-ave)*(nave-ave)*(n-i);
break; //记得要break;出来,现在的结果是对的
}
}
printf("%.4f",sqrt(sum/4));
}
为什么我的代码和题解的代码,没有什么不同的地方,但是我的代码一个测试点都通不过?寻求帮助,谢谢
public class TestMatrix {
// 深度优先搜索 返回对称矩阵
private static boolean dcMatrix(int rank,int[][] arr,int i,int j){
if (j < rank - 1) {
j++;
} else if (i < rank - 1) {
i++;
j=0;
} else {
return true;
}
for(int k=0;k<rank;k++){
arr[i][j] = k;
if(check(i,j,arr)){
if(dcMatrix(rank,arr,i,j)){
return true;
}
}
}
return false;
}
private static boolean check(int i,int j,int[][] arr){
for(int k=0;k<i;k++){
if(arr[k][j] == arr[i][j]){
return false;
}
}
for(int k=0;k<j;k++){
if(arr[i][k] == arr[i][j]){
return false;
}
}
return true;
}
public static void main(String[] args) {
int[][] arr = new int[5][5];
dcMatrix(5,arr,0,-1);
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length;j++){
System.out.print(arr[i][j]);
}
System.out.println();
}
}
}