在一个字符串中随机取掉几个数求最大值的问题
编程要求:输入一个字符串例如:“456”,在输入一个比字符串长度小的整数,比如说 1。求随机去掉输入的整数个的字符后最大的数值。
即是:字符串“456”,随机去掉1个字符后的值是45,46,56。最大的为56.
在比如输入的字符串“3412”,输入整数2. 则去掉2字符后的数为34,31,32,41,42,12.最大的为42.
万能的网友,求给一个编程思路。
#include <stdio.h> char* foo( char* s, size_t n ) { for( size_t i=0; n && s[i]; ++i ) { if( s[i+1]=='\0' || s[i]<s[i+1] ) // 如果i处是波谷 { // 删除i位置上的数,后面的数往前移动 for( size_t j=i; s[j]=s[j+1]; ++j ) { int x = 0;; } --n; // 删除之后,i的前一个位置也可能会变成波谷 if( i != 0 ) --i; --i; } } return s; } int main( void ) { #define TEST(s,n) do { char str[]=s; puts(foo(str,n)); } while(0) TEST( "456", 1 ); TEST( "111", 1 ); TEST( "111", 2 ); TEST( "211", 1 ); TEST( "211", 2 ); TEST( "1122112211", 1 ); TEST( "1122112211", 2 ); TEST( "1122112211", 3 ); #undef TEST }