天天看點

算法設計9-最小正整數問題算法設計9-最小正整數問題

算法設計9-最小正整數問題

參考例題19,P151頁

問題描述

算法設計9-最小正整數問題算法設計9-最小正整數問題

代碼

#pragma warning(disable : 4996)
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
void del(char n[], int b)
{
    int i;
    for (i = b; i < strlen(n); i++)
        n[i] = n[i + 1];//删掉最大數後,後面的數接上
}
int main()
{
    char n[100], m[100];
    int s, i, j, data[200], len;
    int l1;
    int num = 0;
    cout << "請輸入高精度正整數n:";
    cin >> n;
    strcpy(m, n);
    cout << "請輸入s:";
    cin >> s;
    len = strlen(n);
    l1 = len;
    if (s > len)//要删除的位數大于總位數——報錯
    {
        cout << "data error!" << endl; return 0;
    }
    for (i = 0, j = 0; i < len && num < s; i++, j++)
    {
        if ((i == 0 && n[i] > n[i + 1]) || (n[i] > n[i + 1] && n[i] > n[i - 1]))
        {
            for (int t = 0; t < len; t++)
            {
                if (n[i] == m[t])
                {
                    data[num] = t + 1; break;
                }
            }
            del(n, i);
            num++;
            i = i - 2;
            l1--;
        }
    }
    //删除前面的0
    while(n[0]=='0'&&l1>1)
    {
        del(n,0); l1--;
    }
    cout << n << endl;
    for (i = 0; i < s; i++)
        cout << data[i] << "  ";
    return 0;
}
           

運作結果截圖

算法設計9-最小正整數問題算法設計9-最小正整數問題
算法設計9-最小正整數問題算法設計9-最小正整數問題
算法設計9-最小正整數問題算法設計9-最小正整數問題

繼續閱讀