top1编程
← 返回题目
题解

【入门】n个一位数能够组成的最小数

3 条题解

  • 0
    @ 2026-7-29 20:24:21
    #include <iostream>
    #include <algorithm> // 用于排序
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
    
        int a[10]; // 假设 n 最大为 9
        for (int i = 0; i < n; i++) {
            cin >> a[i];
        }
    
        // 从小到大排序
        sort(a, a + n);
    
        // 如果首位是0,找到第一个非零数并交换
        if (a[0] == 0) {
            for (int i = 1; i < n; i++) {
                if (a[i] != 0) {
                    swap(a[0], a[i]);
                    break;
                }
            }
        }
    
        // 输出结果
        for (int i = 0; i < n; i++) {
            cout << a[i];
        }
        cout << endl;
    
        return 0;
    }
    
    • 0
      @ 2026-7-29 0:06:22
      #include <iostream>
      #include <algorithm> // 用于排序
      using namespace std;
      
      int main() {
          int n;
          cin >> n;
      
          int a[10]; // 假设 n 最大为 9
          for (int i = 0; i < n; i++) {
              cin >> a[i];
          }
      
          // 从小到大排序
          sort(a, a + n);
      
          // 如果首位是0,找到第一个非零数并交换
          if (a[0] == 0) {
              for (int i = 1; i < n; i++) {
                  if (a[i] != 0) {
                      swap(a[0], a[i]);
                      break;
                  }
              }
          }
      
          // 输出结果
          for (int i = 0; i < n; i++) {
              cout << a[i];
          }
          cout << endl;
      
          return 0;
      }
      
      • 0
        @ 2026-7-28 23:23:57
        #include<bits/stdc++.h>
        using namespace std;
        int main(){
        	//组成真正的整数,当前数*数量级
        	int n,a[15];
        	cin>>n;
        	for(int i=1;i<=n;i++){
        		cin>>a[i];
        	}
        	sort(a+1,a+n+1);//从小到大排序
        	if(a[1]==0){//第一个是0,需要交换
        		for(int i=2;i<=n;i++){
        			if(a[i]!=0){//找第一个不是0的数
        				swap(a[1],a[i]);//交换函数
        				break;//只交换一次
        			}	
        		}
        	}
        	
        	for(int i=1;i<=n;i++){
        		cout<<a[i];
        	}
        	//去掉0的情况
        	//int t=1;
        //	for(int i=n;i>=1;i--){
        //		s+=a[i]*t;//每次都乘数量级
        //		t*=10;//进入下一个数量级
        //	}
        	return 0;
        }
        
        • 1