蓝桥杯付账问题答案通不过测试点

题目:

img

为什么我的代码和题解的代码,没有什么不同的地方,但是我的代码一个测试点都通不过?
题解代码:


#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));
    
}


为什么我的代码和题解的代码,没有什么不同的地方,但是我的代码一个测试点都通不过?寻求帮助,谢谢

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7499298
  • 你也可以参考下这篇文章:牛客 华为机试(我的代码记录)
  • 除此之外, 这篇博客: 计算一个行,列都不相等的对称矩阵中的 代码 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 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();
           }
       }
    }
    
  • 您还可以看一下 李月喜老师的企业微信自建代开发应用开发篇课程中的 创建代开发模板处理回调并提交审核上线小节, 巩固相关知识点