删除数字问题

2023-11-11

已知n位数字正整数a,去除任意k位数,使剩下数字按原次序排列成新正整数,使其最大

C语言

#include<stdio.h>
#include<string.h>
#define N 100
int del(char a[])
{int i,j,n;
n=strlen(a);//再测一边长度,为删除位数在1以上
for(i=0;i<n;i++)
if(a[i]<a[i+1])
{j=i;
break;
 } 
 if(i==j)//乱序时,左边的数小于右边时,删掉左边的数
 for(;i<=n;i++)
 a[i]=a[i+1];
 else
 j=i-1;//正序即从大到小排列或全部相等,删除最右边数
 return j;
}
int main()
{
	char a[N];
	int i,k,n,s;
	scanf("%s",a);//输入删除数字
	scanf("%d",&k);//删除位数
	n=strlen(a);
	s=0;
	if(k<n)
{
		{for(i=1;i<=k;i++)
	if(s!=n-1)//乱序时
	s=del(a);
	else
	break;

	}
	for(i=0;i<n-k;i++)
	printf("%c",a[i]);
	printf("\n");}
	else
	printf("删除数字个数应小于长度"); 
}

重新排列最大

#include<stdio.h>
#include<string.h>
#define N 100
int del(char a[])
{int i,j,n;
n=strlen(a);//再测一边长度,为删除位数在1以上
for(i=0;i<n;i++)
if(a[i]<a[i+1])
{j=i;
break;
 } 
 if(i==j)//乱序时,左边的数小于右边时,删掉左边的数
 for(;i<=n;i++)
 a[i]=a[i+1];
 else
 j=i-1;//正序即从大到小排列或全部相等,删除最右边数
 return j;
}
int main()
{
	char a[N],m;
	int i,k,n,s;
	scanf("%s",a);//输入删除数字
	scanf("%d",&k);//删除位数
	n=strlen(a);
	s=0;
	if(k<n)
{
		{for(i=1;i<=k;i++)
	if(s!=n-1)//乱序时
	s=del(a);
	else
	break;

	}
	for(i=0;i<n-k-1;i++)
	if(a[i]<a[i+1])
	{m=a[i];
	a[i]=a[i+1];
	a[i+1]=m;
	}
	for(i=0;i<=n-k;i++)
	printf("%c",a[i]);
	printf("\n");}
	else
	printf("删除数字个数应小于长度"); 
}

使其最小

#include<stdio.h>
#include<string.h>
#define N 100
int del(char a[])
{int i,j,n;
n=strlen(a);//再测一边长度,为删除位数在1以上
for(i=0;i<n;i++)
if(a[i]>a[i+1])
{j=i;
break;
 } 
 if(i==j)//乱序时,左边的数大于右边时,删掉左边的数
 for(;i<=n;i++)
 a[i]=a[i+1];
 else
 j=i-1;//正序即从大到小排列或全部相等,删除最左边数
 return j;
}
int main()
{
	char a[N];
	int i,k,n,s;
	scanf("%s",a);//输入删除数字
	scanf("%d",&k);//删除位数
	n=strlen(a);
	s=0;
	if(k<n)
{
		{for(i=1;i<=k;i++)
	if(s!=n-1)//乱序时
	s=del(a);
	else
	break;

	}
	for(i=0;i<n-k;i++)
	printf("%c",a[i]);
	printf("\n");}
	else
	printf("删除数字个数应小于长度"); 
}

重新排列最小

#include<stdio.h>
#include<string.h>
#define N 100
int del(char a[])
{int i,j,n;
n=strlen(a);//再测一边长度,为删除位数在1以上
for(i=0;i<n;i++)
if(a[i]>a[i+1])
{j=i;
break;
 } 
 if(i==j)//乱序时,左边的数小于右边时,删掉左边的数
 for(;i<=n;i++)
 a[i]=a[i+1];
 else
 j=i-1;//正序即从大到小排列或全部相等,删除最右边数
 return j;
}
int main()
{
	char a[N],m;
	int i,k,n,s;
	scanf("%s",a);//输入删除数字
	getchar();
	scanf("%d",&k);//删除位数
	n=strlen(a);
	s=0;
	if(k<n)
{
		{for(i=1;i<=k;i++)
	if(s!=n-1)//乱序时
	s=del(a);
	else
	break;

	}
	for(i=0;i<n-k-1;i++)
	if(a[i]>a[i+1])
	{m=a[i];
	a[i]=a[i+1];
	a[i+1]=m;
	}
	for(i=0;i<=n-k;i++)
	printf("%c",a[i]);
	printf("\n");}
	else
	printf("删除数字个数应小于长度"); 
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除数字问题 的相关文章

随机推荐

  • Java Lombok 报错(IllegalAccessError: class lombok.javac.apt.LombokProcessor)解决方法

    本文主要介绍Java 中 使用Lombok报错 java java lang IllegalAccessError class lombok javac apt LombokProcessor的解决方法及示例代码 原文地址 Java Lom
  • Java Swing 如何让界面更加美观

    文章目录 一 设置窗体的背景图 二 设置Button组件 三 设置字体大小和颜色 四 设置组件的背景色 五 综合测试案例 一 设置窗体的背景图 利用JLable类的构造方法或方法加载图片 ImageIcon image new ImageI
  • 设计一个雇员Employee类

    题目内容 设计一个雇员Employee类 具体要求如下 1 设计雇员Employee类 记录雇员的情况 包括姓名 年薪 受雇时间 String name double salary MyDate start 2 定义MyDate类作为日期
  • 装系统时提示 无法在驱动器0分区上安装windows

    先看提示 先看提示 先看提示 1 在重装系统时遇到一个问题 无法在驱动器0分区上安装windows 2 解决方法 1 在当前安装界面按住Shift F10调出命令提示符窗口 2 输入diskpart 按回车执行 3 进入DISKPART命令
  • 负数为什么要用补码来表示?

    上篇文章讲了 负数在计算机中是怎么存储的 看完之后 应该对原码 反码 补码有了基本的了解了 今天 我们深入探讨一下 为什么计算机中要用补码来表示负数 首先 我们应该清楚 原码是方便给人看的 看到一个数的原码 我们就能根据符号位和后边的二进制
  • [144]如何用VBS编写一个简单的恶搞脚本

    windows系统的电脑 首先右击桌面 选择新建 文本文档 在桌面上新建一个文本文档 随后打开计算机或者是我的电脑 点击其中的组织 xp系统多为工具 选择下面的文件夹和搜索选项 在弹出的窗口中点击查看 向下滚到 找到隐藏已知文件类型的扩展名
  • Android(Kotlin)获取应用全局上下文 ApplicationContext

    需求 Android Kotlin 获取应用全局上下文 ApplicationContext 有些场景下需要使用的 Context 是和页面无关的 仅和应用进程相关 比如 读写文件或访问数据库 这些场景下 我们希望可以在项目内任意位置 直接
  • Allegro PCB的布局

    1 手工导入元器件 place manually进入放置设置页面 在需要放置的元器件前面打勾 可以依次放置元器件 2 快速放置元器件 place Quickplace 使用快速放置功能需要先画好板宽outline才可以 3 设置room区域
  • c++实现数据结构栈和队列

    1 栈 头文件 ifndef ZHAN H define ZHAN H define MAX 8 include
  • laravel-admin安装及使用教程

    安装命令 安装 Laravel 安装器 composer global require laravel installer 创建名为 shopAdmin 项目 laravel new shopAdmin 经过漫长的等待已经安装好了 进入项目
  • springboot中注入FilterRegistrationBean不生效原因

    springboot中注入FilterRegistrationBean不生效原因 回顾 最近自定义了两个过滤器 接口请求返回加密和sql注入处理过滤器 因为在封装一些工具包 我在单独调好之后 就打算做成一个注解 像springboot启动类
  • 基于自注意力机制的LSTM多变量负荷预测

    1 引言 在之前使用长短期记忆网络构建电力负荷预测模型的基础上 将自注意力机制 Self Attention 融入到负荷预测模型中 具体内容是是在LSTM层后面接Self Attention层 在加入Self Attention后 可以将负
  • 计算机操作系统--文件管理

    文件与文件系统 1 文件 文件 File 是具有符号名的 在逻辑上具有完整意义的一组相关信息项的集合 例如 一个源程序 一个目标程序 编译程序 一批待加工的数据和各种文档等都可以各自组成一个文件 信息项是构成文件内容的基本单位 可以是一个字
  • 15_插入排序算法(附java代码)

    15 插入排序算法 一 基本介绍 插入式排序属于内部排序法 是对于欲排序的元素以插入的方式找寻该元素的适当位置 以达到排序的目的 二 插入排序算法 2 1 算法思想 插入排序 Insertion Sorting 的基本思想是 把n个待排序的
  • 每天五分钟机器学习:使用支持向量机的时候,如何选择模型参数?

    本文重点 上一章 我们学习了支持向量机的特征高维映射 也就是如何将特征映射到高维 在支持向量机中有两个参数需要调节 第一个参数是C 第二个参数是 C C 1 入 因此 C较大时 相当于 较小 意味着不使用正则化 可能会导致过拟合 高方差 C
  • kylin启动:Failed to create /kylin

    文章目录 一 当在ubuntu下执行check env sh时遇到问题 KYLIN HOME is set to usr local apache kylin 1 5 4 1 bin cat invalid option 1 Try cat
  • 用最少的线段覆盖点

    假设现有一平面网格 上有N个点 现用直线段把每个点都覆盖住 线段不能折 只能水平或者竖直方向 如何求出使用的线段最少 如下图所示 上面一个网格 有7个点 其中用三条线段就能覆盖住所有点 下图8个点 也是同样三条线段覆盖住8个点
  • 嵌入式学习笔记--GEC6818--bmp图片显示

    一 开发环境 1 ARM linux 2 ubuntu16 04 安装了GCC arm linux gcc 5 4 0 安装方法ubuntu16 04https blog csdn net qq 40592257 article detai
  • Ubuntu下FastDFS的安装

    准备工作 刚安装好的linux系统没有设置root用户密码的 下边介绍如何设置root用户的密码 由于ubtun系统默认是没有激活root用户的 需要我们手工进行操作 在命令行界面下 或者在终端中输入如下命令 sudo passwd 或者s
  • 删除数字问题

    已知n位数字正整数a 去除任意k位数 使剩下数字按原次序排列成新正整数 使其最大 C语言 include