//这个是不是你要的
//################################################################################################
//################################################################################包含的相关头文件
#include
#include
#include
using namespace std;
//################################################################################################
//#####################################################################################主函数 Main
int main(void) {
int i=0, j=0, l=0, num=1;
string str("abc");
for (i=1; i<=str.length(); i++) {
for (j=0; j bool b=true;
string t=str.substr(j, i);
for(int k=1; k if (t.at(k-1)>=t.at(k)) {
cout << setw(str.length()) << t << "->踢除掉" << endl;
b=false;
break;
}
}
if (b) cout << setw(str.length()) << t << "-> " << num++ << endl;
if (t[i-1] == str[str.length()-1]) break;
}
}
return 0;
}
--------------------next---------------------
好多同志都说题目没有看懂,我再详细说一次!
输入一串字母(也可以是一个),例如输入的是a,那么输出就要是1,如果输入的是b,那么输出就是2,如果输入是z,那么输出就是26,之后再要增加就变成了aa(这里相当于26进制),然后是ab,ac,ad……az,再ba,bb,bc……zz,aaa……数字对应增长!
如果要写上面的程序很容易的!但是有一个限制条件——后面的字母要比前面的大(b大于a,c大于b……),也就是说aa这样的就要被剔除掉!,那么字母对应的值为:
a->1
b->2
c->3
……
z->26
aa->剔除掉
ab->27
ac->28
……
az->51
ba->剔除掉
bb->剔除掉
bc->52
……
vwxyz->83681
那么程序写出来以后应该是要求输入一个或一串字母,然后输出一串数字。
例如:
输入ac那么输出为28,输入vwxyz那么输出为83681,如果输入的内容是要剔除的内容的话(例如aa,ab),就输出0!
大家看懂了没?
--------------------next---------------------
输入所说的a输出1,ab输出27,vwxyz就为83681。如果是经常查找,我想应该建立一个结构,2个成员,一个序列1-83681,一个存放数组,这样只要校对数组,然后输出序列,资源上应该节省很多。
下面程序VC6.0++编译通过:
#include
#include
#include
long count1()
{long count=0;char n[6];
for(n[0]='a';n[0]<='z';n[0]++)
count++;
return count;
}
long count2()
{long count=0;char n[6];
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
count++;
return count+count1();
}
long count3()
{long count=0;char n[6];
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
for(n[2]=n[1]+1;n[2]<='z';n[2]++)
count++;
return count+count2();
}
long count4()
{long count=0;char n[6];
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
for(n[2]=n[1]+1;n[2]<='z';n[2]++)
for(n[3]=n[2]+1;n[3]<='z';n[3]++)
count++;
return count+count3();
}
void main()
{
char n[6],getch[6];
long s=0;
int find=0; //寻数标记
cin>>getch; //数据输入
int i=strlen(getch); //由于数据非常多,首先判断数据是否符合要求
if(getch[0]<'a'||getch[i-1]>'z')
{
cout<<"输入无效数据返回:"< exit(1);
}
for(int j=i;j>1;j--)
if(getch[j-2]>=getch[j-1])
{
cout<<"输入无效数据返回:"< exit(1);
}
switch(i) //开始用长度判断
{
case 1:
n[1]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
{
s++;
if(strcmp(n,getch)==0)
{
cout<"< exit(1);
}
}
case 2:
n[2]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
{
s++;
if(strcmp(n,getch)==0)
{
cout<"< exit(1);
}
}
case 3:
n[3]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
for(n[2]=n[1]+1;n[2]<='z';n[2]++)
{
s++;
if(strcmp(n,getch)==0)
{
cout<"< exit(1);
}
}
case 4:
n[4]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
for(n[2]=n[1]+1;n[2]<='z';n[2]++)
for(n[3]=n[2]+1;n[3]<='z';n[3]++)
{
s++;
if(strcmp(n,getch)==0)
{
cout<"< exit(1);
}
}
case 5:
n[5]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
for(n[2]=n[1]+1;n[2]<='z';n[2]++)
for(n[3]=n[2]+1;n[3]<='z';n[3]++)
for(n[4]=n[3]+1;n[4]<='z';n[4]++)
{
s++;
if(strcmp(n,getch)==0)
{
cout<"< exit(1);
}
}
}
}
--------------------next---------------------
感觉很多地方都做了重复的事情,而我又实在找不出地方,今天就去看了看数据结构,突然就有了灵感,现在我把程序简化如下,希望对你有所帮助:(VC++6.0)
#include
#include
#include
void main()
{
char n[6],getch[6];
long s=0;
int find=0; //寻数标记
cin>>getch; //数据输入
int i=strlen(getch); //由于数据非常多,首先判断数据是否符合要求
if(getch[0]<'a'||getch[i-1]>'z')
{
cout<<"输入无效数据返回:"< exit(1);
}
for(int j=i;j>1;j--)
if(getch[j-2]>=getch[j-1])
{
cout<<"输入无效数据返回:"< exit(1);
}
n[1]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
{
s++;
if(strcmp(n,getch)==0)
{
cout<"< exit(1);
}
}
n[2]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
{
s++;
if(strcmp(n,getch)==0)
{
cout<"< exit(1);
}
}
n[3]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
for(n[2]=n[1]+1;n[2]<='z';n[2]++)
{
s++;
if(strcmp(n,getch)==0)
{
cout<"< exit(1);
}
}
n[4]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
for(n[2]=n[1]+1;n[2]<='z';n[2]++)
for(n[3]=n[2]+1;n[3]<='z';n[3]++)
{
s++;
if(strcmp(n,getch)==0)
{
cout<"< exit(1);
}
}
n[5]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
for(n[2]=n[1]+1;n[2]<='z';n[2]++)
for(n[3]=n[2]+1;n[3]<='z';n[3]++)
for(n[4]=n[3]+1;n[4]<='z';n[4]++)
{
s++;
if(strcmp(n,getch)==0)
{
cout<"< exit(1);
}
}
}
--------------------next---------------------
#include
#include
#include
void count(char *n,char *getch)
{
static long s=0;
s++;
if(strcmp(n,getch)==0)
{
cout<"< exit(1);
}
}
void main()
{
char n[6],getch[6];
cin>>getch; //数据输入
int i=strlen(getch); //由于数据非常多,首先判断数据是否符合要求
if(getch[0]<'a'||getch[i-1]>'z')
{
cout<<"输入无效数据返回:"<<0< exit(1);
}
for(int j=i;j>1;j--)
if(getch[j-2]>=getch[j-1])
{
cout<<"输入无效数据返回:"<<0< exit(1);
}
n[1]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
count(n,getch);
n[2]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
count(n,getch);
n[3]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
for(n[2]=n[1]+1;n[2]<='z';n[2]++)
count(n,getch);
n[4]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
for(n[2]=n[1]+1;n[2]<='z';n[2]++)
for(n[3]=n[2]+1;n[3]<='z';n[3]++)
count(n,getch);
n[5]='\0';
for(n[0]='a';n[0]<='z';n[0]++)
for(n[1]=n[0]+1;n[1]<='z';n[1]++)
for(n[2]=n[1]+1;n[2]<='z';n[2]++)
for(n[3]=n[2]+1;n[3]<='z';n[3]++)
for(n[4]=n[3]+1;n[4]<='z';n[4]++)
count(n,getch);
--------------------next---------------------
阅读(1030) | 评论(0) | 转发(0) |