当前位置:文档之家› char字符串数组问题C++程序代码

char字符串数组问题C++程序代码

char字符串数组问题C++程序代码
char字符串数组问题C++程序代码

10char

用一个二维的字符数组,来存储输入的名字的字符串,排除掉重复的字符串,并以剩余字符串从小到大排列,每一次输入都要调整现有的数组。

调整方法如下:

从头到尾和所有的字符串进行比较,如果输入字符串大,就继续向后比较;

如果有相同字符串,则忽略当前输入;如果输入字符串比当前字符串小,则输入字符串应该插入到当前字符串的位置,其余字符串都要向后移。

样例输入:

Tom

Jason

Andy

Bart

Howard

House

Jane

Jason

#

样例输出:

Andy

Bart

Howard

Jack

Jane

Jason

Tom

//方法2

#include

#include

#include

#include

using namespace std;

int main()

{

int N,M,temp;

int ap[100000]={0},tt[301]={0};

cin>>N>>M;

for(int i=0;i

cin>>ap[i];

for(int i=0;i

{

cin>>temp;

tt[temp]++;

}

for(int i=0;i

for(int j=ap[i];j>0;j--)

if(tt[j])

{

M--;

tt[j]--;

break;

}

cout<

return 0;

}

//方法3

#include

#include

#include

#include

using namespace std;

int main()

{

int N,M,temp;

int ap[301]={0},tt[301]={0};

cin>>N>>M;

for(int i=0;i

{

cin>>temp;

ap[temp]++;

}

for(int i=0;i

{

cin>>temp;

tt[temp]++;

}

for(int i=300;i>0;i--)

for(int j=i;j>0;j--)

if(ap[i]&&tt[j]&&j

{

M--;

tt[j]--;

ap[i]--;

i++;

}

cout<

return 0;

}

//测试数据生成

#include

#include

#include

#include

using namespace std;

int main()

{

int n,m;

cin>>n>>m;

FILE *in=fopen("at.in","w");

FILE *out=fopen("at.out","w");

srand((unsigned)time( NULL ) );

fprintf(in,"%d %d\n",n,m);

int ap[301]={0},tt[301]={0},temp;

for(int i=0;i

{

temp=rand()%300;

ap[temp]++;

fprintf(in,"%d\n",temp);

}

for(int i=0;i

{

temp=rand()%300;

tt[temp]++;

fprintf(in,"%d\n",temp);

}

for(int i=300;i>0;i--)

for(int j=i;j>0;j--)

if(ap[i]&&tt[j]&&j

{

m--;

tt[j]--;

ap[i]--;

i++;

}

fprintf(out,"%d\n",m);

return 0;

}

相关主题
文本预览
相关文档 最新文档