问题标题: 酷町堂:1463 山重水复

0
0
已解决
棠梨煎雪
棠梨煎雪
中级守护
中级守护

精英怪 难度2 悬赏20 

#include <iostream>
using namespace std;
int main(){
	string a;
	cin>>a;
	int cd=a.size();
	for(int i=0;i<cd;i++)
	{
		for(int j=0;j<=i;j++)
		{
			if(a[i]==a[j]){
				a[i]='1';	
			}
		}
	}
	for(int i=0;i<cd;i++)
	{
		if(a[i]!='1')
		{
			cout<<a[i];
		}
	}
	return 0;
} 

 

棠梨煎雪在2018-03-18 14:02:46追加了内容

改了一下,可还是80分。 

#include <iostream>
using namespace std;
int main(){
	string a;
	cin>>a;
	int cd=a.size();
	for(int i=0;i<cd;i++)
	{
		for(int j=0;j<i;j++)
		{
			if(a[i]==a[j]){
				a[i]='1';	
			}
		}
	}
	for(int i=0;i<cd;i++)
	{
		if(a[i]!='1')
		{
			cout<<a[i];
		}
	}
	return 0;
} 

 

棠梨煎雪在2018-03-18 14:16:26追加了内容

@栾峻岩  

#include <iostream>
using namespace std;
int b[1010]={0};
int main(){
	string a;
	cin>>a;
	int cd=a.size();
	for (int i=0;i<cd-1;i++)
	{
    	for (int j=i+1;j<cd;j++)
		{
			if(a[i]==a[j]){
				b[j]=-1;	
			}
		}
	}
	for(int i=0;i<cd;i++)
	{
		if(b[i]!=-1)
		{
			cout<<a[i];
		}
	}
	return 0;
} 

0
已采纳
栾峻岩
栾峻岩
初级天翼
初级天翼
    for(int i=0;i<cd;i++)
    {
        for(int j=0;j<=i;j++)

第七至第九行,错了,

应是:

for (int i=0;i<cd-1;i++)
{
    for (int j=i+1;j<cd;j++)

 

 

还有第12行:

 a[i]='1';

一个字符串里面可能有‘1’,但没有-1.

所以改为:

再循环前定义:b[1010]={0};
在第12行改为: b[j]=-1;

对应的,第18行也要改!

100AC

栾峻岩在2018-03-18 22:35:57追加了内容

加:#include<string>

把cin>>a改为getline(cin,a);

1
储金洋
储金洋
新手光能
新手光能

这题你用桶排吧,程序如下:

循环从0~s1.size()-1
{
    count[s1[i]]++;
}
循环从0~s1.size()-1
{
if(count[s1[i]]>=1)
        cout<<s1[i];
        count[s1[i]]=0;
}

 

1
宋婉婷
宋婉婷
中级守护
中级守护

棠梨煎雪 你好,我没有看出你的错误,但我可以跟你讲一下我的思路:

先在全局变量里定义一个整形数组b,大小为10001个

然后定义一个string类型的字符串a,再用getline输入

接着循环从0开始,到a.size( )-1结束

b[a[i]]=1;

第二个循环(不是双重循环)和第一个循环一模一样,里面是核心:

if(b[a[i]]==1)
        {
            cout<<a[i];
            b[a[i]]=0;
        }

最后return 0就好了

我就是这样做的,很方便,100分。

0
0
张瑀涵
张瑀涵
高级光能
高级光能

cin>>a;

改成

getline(cin,a);

要加头文件:#include<string>

0
孙艺芳
孙艺芳
高级守护
高级守护
cin>>s;

应该是:

getline(cin,s);

 

0
0
0
0
杨陈卓
杨陈卓
新手天翼
新手天翼
    for(int i=0;i<=strlen(a)-1;i++)
        for(int j=i+1;j<strlen(a);j++)
            if(a[i]==a[j])
                a[j]=3;
    for(int i=0;i<strlen(a);i++)
    if(a[i]!=3)
        cout<<a[i]; 

核心

我要回答