小宁喜欢画画,她有很多颜色的彩笔,赤、橙、黄、绿、蓝、靛、紫、黑… 他还有一个16格的彩笔盒,每个格子正好放一支彩笔。每次上课会根据需要装彩笔,并且都会装满彩笔盒。有时彩笔盒里会出现
2支颜色相同的彩笔(颜色相同的笔只会有一种,且最多只有2支),如下图所示:其中每个大写字母代表一种颜色的彩笔,第1支与第7支的彩笔颜色相同。
输入格式
16个大写字母, 分别代表彩笔的不同颜色
输出格式
如果16支笔的颜色各不相同,输出 different。
如果有2支笔的颜色一样,以先小后大的顺序输出2支彩笔的编号。
2支相同颜色笔的位置序号,2个位置序号之间用空格分开。
输入样例
ABCDEFVHIJPLMNOA
输出样例
1 16
#include<iostream>
using namespace std;
#include<string>
int main()
{
char color[16];
for(int i=0;i<16;i++)
{
cin>>color[i];
}
for(int i=0;i<16;i++)
{
for(int j=0;j<i;j++)
{
if(color[i]==color[j])
{
cout<<j+1<<" "<<i+1<<" " <<endl;
}
}
}
return 0;
}
只想出来了怎么输出相同的,如果全部不同输出different想了一天也没想出来。思路是如果一个个比对没有相等的,就输出different,但是问题在循环下就会输出很多个different.,这一步不知道要怎么解决。
#include<iostream>
using namespace std;
#include<set>
int main()
{
char color[16];
for(int i=0;i<16;i++)
{
cin>>color[i];
}
set<char>s;//建一个SET容器。
for(int i=0;i<16;i++)
{
s.insert(color[i]);//把这16个字母一个个传到SET容器里,
}
if(s.size()==16)//SET容器的一个最大特点就是有相同的数,只会取一个
{
cout<<"different"<<endl; //如果这16个字母里有重复的,容器长度就没有16了,如果长度等于16那就证明没有重复的字
}
else
{
for(int i=0;i<16;i++)
{
for(int j=0;j<i;j++)
{
if(color[i]==color[j])
{
cout<<j+1<<" "<<i+1<<" " <<endl;
}
}
}
}
return 0;
}