一道简单题

て烟熏妆下的殇ゞ 提交于 2020-01-28 07:14:35

 

 

 

关键是要排序,如AABBBBC,然后可比较,当相同时将当前位置向后移,而不增加统计数目,不同时增加统计数目,再退出第二循环,这样就可以统计了。

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int n,m,i,j;
 8     char **a;
 9     cin>>n;
10     if(n<1||n>1000)
11         cin>>n;
12     else{
13         a=new char*[n];
14         for(i=0;i<n;i++){
15             a[i]=new char[20];
16             cin>>a[i];
17             strupr(a[i]);
18         }
19         for(i=0;i<n-1;i++)
20             for(j=0;j<n-i-1;j++)
21                 if(strcmp(a[j],a[j+1])>0)
22                     swap(a[j],a[j+1]);        
23         m=1;
24         for(i=0;i<n;i++)
25             for(j=i+1;j<n;j++)
26                 if(strcmp(a[i],a[j])!=0){
27                     m++;
28                     break;
29                 }
30                 else
31                     i++;
32     }
33     
34     cout<<endl<<m<<endl;
35     for(i=0;i<n;i++)
36         delete []a[i];
37     delete[] a;
38     return 0;
39 
40 }
View Code
 
 1 #include <iostream>
 2 #include <string>
 3 #include <algorithm>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int n,i,j,m;
 9     char *a;
10     cin>>n;
11     string *str=new string[n];
12     for(i=0;i<n;i++){
13         a=new char[20];
14         cin>>a;
15         strupr(a);
16         str[i]=a;    
17     }
18     //sort(str,str+n);
19     for(i=0;i<n-1;i++)
20         for(j=0;j<n-i-1;j++)
21             if(str[j]>str[j+1])
22                 swap(str[j],str[j+1]);        
23     m=1;
24     for(i=0;i<n;i++)
25         for(j=i+1;j<n;j++){
26             if(str[i]!=str[j]){
27                 m++;
28                 break;
29             }
30             else
31                 i++;
32         }
33     cout<<m<<endl;
34     
35     return 0;
36         
37 }
用到string
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!