#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
void deletes(char n[], int b, int k);
void ScanDelete(char n[]);
void Deletes(char n[]);
void ArrayRange();//数列极差
int calculatemin(int a[], int n);
int calculatemax(int a[], int n);
void max2(int a[], int n);
void min2(int a[], int n);
int s1, s2;
void EgyptFraction(int a, int b);//a和b分别作为分子和分母
const int N = 100;
int main ()
{
char n[N] = "123456";//将大数存储在字符型数组中
//ScanDelete(n);
Deletes(n);
ArrayRange();
EgyptFraction(7, 8);
}
void Deletes(char n[])
{
int s, data[100], len, i, j, j1;
s = 3;
len = strlen(n);
if(s >= len)
{
cout << "data is error";
return;
}
i = j = j1 = 0;
while(i < s && j <= strlen(n) - 1)
{//i代表删除位数 值从0开始
while(n[j] <= n[j + 1])
j++;
if(j < strlen(n))//证明出现高位元素大于低位元素
{
deletes(n, j, 1);//可以直接删除
if(j > j1)
data[i] = j + i;
else
data[i] = data[i - 1] - 1;
i++;
j1 = j;
j--;//进行删除操作之后需要对元素进行回溯 但只回溯一位即可 而不需要和另一个算法一样从头开始
}
[算法设计与分析]4.4.1可绝对贪婪问题(高精度正整数删除s位使剩余最大+数列极差+埃及分数)
最新推荐文章于 2022-07-12 09:44:31 发布