c++🎉️ 程序设计 - 彩笔

小宁喜欢画画,她有很多颜色的彩笔,赤、橙、黄、绿、蓝、靛、紫、黑… 他还有一个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;
}