`
zxxapple
  • 浏览: 78145 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

非递减字符串问题

阅读更多

如题:

       在非递减字符串中,从左到右的字符依次按ASC码非递减排列,例如 abcd,aaaa,aabb等等,现在假设字符串由a-j等10个字符串组成,请你确定特定长度的非递减字符串的数目。

 

 

算法思想:当我显现看到这个题,有些迷惑,为什么是十个字符串呢,,后才自然想到对应十个阿拉伯数字0-9.

               问题就可以从这个地方解决。把某个长度的串看成是一个整数,想办法取出这个整数的每一个具体的位,然后进行  比较不就可以判断是否复合条件,比如给定的长度为4,我就从0000遍历到9999,找出复合条件的整数然后计数,不就可以了吗。这个方法效率肯定会比较低,而且如果刚给的字母的个数超过10,就不能用这个办法了。。。。不知道还有什么其他好的办法?

 

下面是我实现的代码--简单

 

#include<stdio.h>
#include <stdlib.h>

int  exp(int i) 
{
	int res=1;
	int j=0;
	while(j<i)
	{
       res*=10; 
	   j++;
	}
	return res;
}

void getBit(int str[],int data,int l) //获取整数中每一个位
{
	for(int i=0;i<l;i++)
	{
		str[i]=0;
	}
	for(int j=0;j<l;j++) 
	{
		str[j]=(data%exp(j+1))/exp(j);
	}
}
int isSort(int str[],int l)  //判断是否非递减
{
	for(int i=0;i<l-1;i++)
	{
		if(str[i]<str[i+1])
		{
			return 0;
		}
	}
	return 1;
}
void main()
{
	int l=4;//字符串长度
	int count=0;//计数
	printf("please input a len of str\n");
	scanf("%d,%d",&l);
    printf("\n");
	int data=0;//长度为l的最大整数
	int *bit=(int*)malloc(sizeof(int)*l);;

	for(int i=0;i<l;i++)
	{
        data+=exp(i)*9;  
	}
	for(int j=0;j<=data;j++)
	{
		getBit(bit,j,l);
		if(isSort(bit,l)==1)
		{
			count++;
		}
	}
	free(bit);
	printf("%d\n",count);
}
0
0
分享到:
评论
2 楼 zxxapple 2012-02-16  
ZaneLee007 写道
可重复的排列组合问题吧?和数字没什么关系

恩 是的  ,上边只是一个特例的简单实现
1 楼 ZaneLee007 2012-02-16  
可重复的排列组合问题吧?和数字没什么关系

相关推荐

    PHP字符串的递增和递减示例介绍

    今天看到php手册上有这么一段话: “在处理字符变量的算数运算...递增/递减其他字符变量则无效,原字符串没有变化。” 也就是说: 复制代码 代码如下: for($i = ‘A’; $i &lt;= ‘Z’; $i++) { echo $i; //if( $i ==

    Visual C++ 2005入门经典--源代码及课后练习答案

    4.1.4 字符数组和字符串处理 147 4.1.5 多维数组 150 4.2 间接数据存取 153 4.2.1 指针的概念 153 4.2.2 声明指针 154 4.2.3 使用指针 155 4.2.4 初始化指针 157 4.2.5 sizeof运算符 162 4.2.6 ...

    明解C语言(第3版)入门篇.[日]柴田望洋(带详细书签).pdf 【半高清】

    用数组实现的字符串和用指针实现的字符串的不同点 318 字符串数组 320 11-2 通过指针操作字符串 323 判断字符串长度 323 字符串的复制 325 不正确的字符串复制 328 返回指针的函数 329 11-3 字符串处理...

    LeetCode判断字符串是否循环-algorithm:算法

    输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 7. 斐波那契数组 延伸...

    VC++6.0核心编程源码.rar

    当然,你首先必须自己转换字符串,然后将已转换的消息表资源嵌入你的.exe文件或DLL模块,不过,这时该函数会选定正确的嵌入对象。ErrorShow示例应用程序(本章后面将加以介绍)展示了如何调用该函数,以便将...

    javascript文档

    encodeURIComponent 方法 将文本字符串编码为合法的通用资源标识符 (URI)组件。 Enumerator 对象 提供集合中的项的枚举。 相等运算符(==) 比较两个表达式,看是否相等。 Error 对象 包含在运行 JScript 代码时...

    JScript 语言参考

    encodeURIComponent 方法 将文本字符串编码为合法的通用资源标识符 (URI)组件。 Enumerator 对象 提供集合中的项的枚举。 相等运算符(==) 比较两个表达式,看是否相等。 Error 对象 包含在运行 JScript 代码时...

    微软JavaScript手册

    encodeURIComponent 方法 将文本字符串编码为合法的通用资源标识符 (URI)组件。 Enumerator 对象 提供集合中的项的枚举。 相等运算符(==) 比较两个表达式,看是否相等。 Error 对象 包含在运行 JScript 代码时...

    leetcode有效期-Leetcode-Javascript-Solutions:我对LeetCode问题的回答

    leetcode有效力扣解决的...非递减数组 给定一个包含 n 个整数的数组 nums,您的任务是检查它是否可以通过修改最多 1 个元素而变得不减少。 我们定义一个数组是非递减的,如果 nums[i] &lt;= nums[i + 1] 对每个 i(从 0

    leetcode岛屿的最大面积-LeetCode:标记我在https://leetcode.com/上练习的问题的解决方案

    修改数组为非递减 子串问题 分割字符串 根据身高排队 双指针 有序数组中寻找两个数字等于特定数字 旋转元音字母 寻找两数平方和等于第三个数 字符串回文 归并排序数组 链表是否有环 字符串最长单词 排序 第 K 个元素...

    C语言入门经典(第4版)--源代码及课后练习答案

    6.4.2 使用库函数确定字符串的长度 211 6.4.3 使用库函数连接字符串 212 6.4.4 比较字符串 213 6.4.5 搜索字符串 216 6.5 分析和转换字符串 219 6.5.1 转换字符 222 6.5.2 将字符串转换成数值 225 6.7 使用...

    C# 程序设计手册(WORD)

    使用字符串方法搜寻字符串 66 使用正则表达式搜寻字符串 67 判断字符串是否表示数值 70 将 String 转换为 DateTime 71 在旧版编码方式和 Unicode 间转换 72 转换 RTF 为纯文本 74 语句、表达式和运算符 75 语句 76 ...

    leetcode中国-leetCode:leetcode

    leetcode中国 leetCode Learning algorithm from leetCode, Work hard , boy ...反转字符串中的元音字符 ...回文字符串 ...按照字符出现次数对字符串排序 ...荷兰国旗问题DutchFlag ...修改一个数成为非递减数组 10. 子数组最大的和

    leetcode推箱子放进进仓库-Leetcode-May-Challenge-2021:它包含LeetcodeMayChallenge202

    非递减数组 跳跃游戏二 将排序列表转换为二叉搜索树 两个字符串的删除操作 将箱子放入仓库 I 超级回文 构造具有多个和的目标数组 数素数 您可以从卡中获得的最大积分 范围总和查询 2D - 不可变 不明确的坐标 将...

    数据结构实验(含源码)

    ),将两个按B分成绩非递减排序的学生成绩单合并为一个按B分成绩非递增排序的通讯录,B分成绩相同且学号相同的成绩记录在结果中只保留一个;要求算法的时间复杂度不超过两个链表的长度之和O(m+n); (8)实现函数int ...

    (完整版)python二级考试试题1.doc

     以下关于 Python 字符串的描述中,错误的是 A 字符串是字符的序列,可以按照单个字符或者字符片段进行索引 B 字符串包括两种序号体系:正向递增和反向递减 C Python 字符串提供区间访问方式,采用 [N:M] 格式,...

    leetcode分类-Leetcode:力码

    判断数组是否非递减(&lt;=1 异常) 667 美丽的排列 2:构造一个包含 [1,n] 的长度为 n 的列表,其中邻居之间的 abs 差异恰好形成 k 个不同的数字 数字消除: 原来的约瑟夫问题:消除一个,跳过一个,圈起来。 记

Global site tag (gtag.js) - Google Analytics