22~~

int n;
scanf("%d", &n);
int a[n];
for (int i = 0; i < n; ++i)
scanf("%d", &a[i]);
int count25 = 0, count50 = 0; // 25元和50元的数量
for (int i = 0; i < n; ++i)
{
int money = a[i];
if (money == 25)
count25++;
else if (money == 50)
{
if (count25 == 0)
{
printf("NO\n");
return 0; // 无法找零,直接退出
}
count25--; // 减去找零25元
count50++; // 收入50元
}
else if (money == 100)
{
// 100元找零优先用50+25
if (count50 > 0 && count25 > 0)
{
count50--;
count25--;
}
else if (count25 >= 3)
count25 -= 3; // 用3张25元
else
{
printf("NO\n");
return 0;
}
}
}
printf("YES\n");
return 0;

bug1:段错误核心原因是「数组定义时机错误」:在读取  n  之前就定义了变长数组  a[n] ,导致  n  未初始化(值随机,可能为负数或非法值),进而引发数组越界或内存分配错误。Screenshot_2025-06-25-18-30-29-84_98a3ad1b03a1f4f37bc1b1582cf92d0d

posted @ 2025-06-30 18:34  ervgiu28hg34y827  阅读(8)  评论(0)    收藏  举报