2 条题解

  • 0
    @ 2025-11-21 12:17:33
    #include<bits/stdc++.h> 
    using namespace std;
    int  a[101];
    int main()
    {
        int n,cnt = 0;
        cin>>n;
        for (int i = 0; i < n; i++)
    	{
    		cin >> a[i];
    	}
        
        while (true) 
    	{
            bool all_zero = true;
            for (int i = 0; i < n; i++)
    		{
                if (a[i] != 0)
    			{
                    all_zero = false;
                    break;
                }
            }
            if (all_zero)
    		{
    			break;
    		}
            int max_idx = 0;
            for (int i = 1; i < n; i++)
    		{
                if (a[i] >= a[max_idx])
    			{
    				max_idx = i;
    			}
            }
            int min_val = 101;
            for (int i = 0; i < n; i++)
    		{
                if (a[i] != 0 && a[i] < min_val)
    			{
    				min_val = a[i];
    			}
            }
            a[max_idx] -= min_val;
            cnt+=1;
        }
        cout << cnt;
        return 0;
    }
    
    
    • 0
      @ 2025-11-3 0:26:04

      C++ :

      #include <algorithm>
      #include <cstdio>
      using namespace std;
      const int N = 105;
      int n;
      int a[N];
      int cnt;
      int main() {
      	scanf("%d", &n);
      	for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
      	while (1) {
      	int mx = n;
      	for (int i = 1; i <= n; i++)
      	if (a[i] >= a[mx]) mx = i;
      	if (a[mx] == 0) break;
      	int mn = a[mx];
      	for (int i = 1; i <= n; i++)
      	if (a[i] > 0) mn = min(mn, a[i]);
      	a[mx] -= mn;
      	cnt++;
      	}
      	printf("%d\n", cnt);
      	return 0;
      }
      
      • 1

      信息

      ID
      5639
      时间
      1000ms
      内存
      128MiB
      难度
      3
      标签
      递交数
      1
      已通过
      1
      上传者