MGJ13. 派分糖果
描述
有N个孩子站成一排,每个孩子有一个分值。给这些孩子派发糖果,需要满足如下需求:
1、每个孩子至少分到一个糖果
2、分值更高的孩子比他相邻位的孩子获得更多的糖果
求至少需要分发多少糖果?
输入描述
0,1,0输出描述
4示例1
输入:
5,4,1,1
输出:
7
C 解法, 执行用时: 2ms, 内存消耗: 356KB, 提交时间: 2020-07-28
#include <stdio.h> int main() { int score[100]; int su[100]; int Num_su; char buf[128]; int i = 0; int j,max,IN,more; int child; Num_su = 0; while(1) { scanf("%d",&score[i]); if(i==0) { max = 1; su[i]=1; Num_su+=su[i]; } else { if(score[i] == score[i-1]) su[i]=su[i-1]; else if(score[i] > score[i-1]) su[i]=su[i-1]+1; else { su[i]=1; //Num_su+=1; j=i; while( (score[j]<=score[j-1]) && (su[j]>=su[j-1]) ) { su[j-1]+=1; Num_su+=1; j--; if(j==0) break; } } Num_su+=su[i]; } if(getchar()=='\n'||i>=100) break; i++; } printf("%d",Num_su); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 360KB, 提交时间: 2020-05-20
#include <stdio.h> int main() { int score[100]; int su[100]; int Num_su; char buf[128]; int i = 0; int j,max,IN,more; int child; Num_su = 0; while(1) { scanf("%d",&score[i]); if(i==0) { max = 1; su[i]=1; Num_su+=su[i]; } else { if(score[i] == score[i-1]) su[i]=su[i-1]; else if(score[i] > score[i-1]) su[i]=su[i-1]+1; else { su[i]=1; //Num_su+=1; j=i; while( (score[j]<=score[j-1]) && (su[j]>=su[j-1]) ) { su[j-1]+=1; Num_su+=1; j--; if(j==0) break; } } Num_su+=su[i]; } if(getchar()=='\n'||i>=100) break; i++; } printf("%d",Num_su); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2020-05-03
#include <stdio.h> int main() { int score[100]; int su[100]; int Num_su; char buf[128]; int i = 0; int j,max,IN,more; int child; Num_su = 0; while(1) { scanf("%d",&score[i]); if(i==0) { max = 1; su[i]=1; Num_su+=su[i]; } else { if(score[i] == score[i-1]) su[i]=su[i-1]; else if(score[i] > score[i-1]) su[i]=su[i-1]+1; else { su[i]=1; //Num_su+=1; j=i; while( (score[j]<=score[j-1]) && (su[j]>=su[j-1]) ) { su[j-1]+=1; Num_su+=1; j--; if(j==0) break; } } Num_su+=su[i]; } if(getchar()=='\n'||i>=100) break; i++; } printf("%d",Num_su); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2020-04-24
#include <stdio.h> int main() { int score[100]; int su[100]; int Num_su; char buf[128]; int i = 0; int j,max,IN,more; int child; Num_su = 0; while(1) { scanf("%d",&score[i]); if(i==0) { max = 1; su[i]=1; Num_su+=su[i]; } else { if(score[i] == score[i-1]) su[i]=su[i-1]; else if(score[i] > score[i-1]) su[i]=su[i-1]+1; else { su[i]=1; //Num_su+=1; j=i; while( (score[j]<=score[j-1]) && (su[j]>=su[j-1]) ) { su[j-1]+=1; Num_su+=1; j--; if(j==0) break; } } Num_su+=su[i]; } if(getchar()=='\n'||i>=100) break; i++; } printf("%d",Num_su); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 368KB, 提交时间: 2020-05-05
#include <stdio.h> int main() { int score[100]; int su[100]; int Num_su; char buf[128]; int i = 0; int j,max,IN,more; int child; Num_su = 0; while(1) { scanf("%d",&score[i]); if(i==0) { max = 1; su[i]=1; Num_su+=su[i]; } else { if(score[i] == score[i-1]) su[i]=su[i-1]; else if(score[i] > score[i-1]) su[i]=su[i-1]+1; else { su[i]=1; //Num_su+=1; j=i; while( (score[j]<=score[j-1]) && (su[j]>=su[j-1]) ) { su[j-1]+=1; Num_su+=1; j--; if(j==0) break; } } Num_su+=su[i]; } if(getchar()=='\n'||i>=100) break; i++; } printf("%d",Num_su); return 0; }