关于我的“坚持不懈”和”幡然醒悟“

2024.4.17

#include<stdio.h>
void f(int num,double *arr,double *ave,double *dif){
  double max=arr[0];
  double min=arr[0];
  int MAX_SIZE=0;
  int MIN_SIZE=0;
  for(int i=0;i<num;i++){
    if(max<=arr[i]) {
      max=arr[i];
      MAX_SIZE=i;
    }
    if(min>=arr[i]){
      min=arr[i];
      MIN_SIZE=i;
    }
  }
  double sum=0.0;
  for(int i=0;i<num;i++){
    if(i!=MAX_SIZE&&i!=MIN_SIZE){
      sum+=arr[i];
      //printf("%lf ",sum);
    }
  }
  (*ave)=sum/(num-2);
  double max_2=arr[MAX_SIZE+1];
  double min_2=arr[MIN_SIZE-1];
  for(int i=0;i<num;i++){
    if(i!=MAX_SIZE&&i!=MIN_SIZE){
      if(max_2<=arr[i]) max_2=arr[i];
      if(min_2>=arr[i]) min_2=arr[i];
    }
  }
  double dif_1=0.0;
  double dif_2=0.0;
  dif_1=max_2-(*ave);
  dif_2=(*ave)-min_2;
  if(dif_1>=dif_2) (*dif)=dif_1;
  if(dif_1<dif_2) (*dif)=dif_2;
}
int main(){
  int num=0;
  double arr[301];
  double ave=0,dif=0;
  scanf("%d",&num);
  if(num<=2||num>300) return 0;
  for(int i=0;i<301;i++){
    arr[i]=0;
  }
  for(int i=0;i<num;i++){
    scanf("%lf",&arr[i]);
    if(arr[i]<0) return 0;
  }
  f(num,arr,&ave,&dif);
  printf("%.2lf %.2lf",ave,dif);
  return 0;
}
以上为洛谷关于白细胞的题,经过我的坚持不懈,终于“暴力”解出来了,真的不得不佩服我写编程代码的那种感觉!!!
#include<stdio.h>
void get_new_arr(int num_1,int num_2,int arr[101][101],int brr[101][101]){
  for(int i=0;i<num_1;i++){
    for(int j=0;j<num_2;j++){
      brr[j][i]=arr[i][j];
    }
  }
}
int main(){
  int num_1=0;
  int num_2=0;
  int arr[101][101];
  int brr[101][101];
  scanf("%d%d",&num_1,&num_2);
  for(int i=0;i<101;i++){
    for(int j=0;j<101;j++){
      arr[i][j]=0;
      brr[i][j]=0;
    }
  }
  for(int i=0;i<num_1;i++){
    for(int j=0;j<num_2;j++){
      scanf("%d",&arr[i][j]);
    }
  }
  get_new_arr(num_1,num_2,arr,brr);
  for(int i=0;i<num_2;i++){
    for(int j=num_1-1;j>=0;j--){
      printf("%d ",brr[i][j]);
    }
  printf("\n");
  }
  return 0;
}
上述题为洛谷关于图像旋转的题,是根据上一题来推进的,我以为要改变算法问题,但后来发现只要改变输出就可以了!幡然醒悟!!!
posted @ 2024-04-17 22:09  pengfu_xin  阅读(4)  评论(0编辑  收藏  举报