目標 解75%
想法是
用一個 走訪 陣列 visit[26]={0};
每個字母字串拜訪了幾個 字母
如果有 就為1
每兩個字串的 拜訪字母數 如果剛好互補
則互補cp組 +1
只是如何實際寫出呢?
以下是錯誤的
#include <iostream> #include <cstdlib> #include <cstring> #include <string> using namespace std; int main(){ string str[10000]; long long int m,n; cin>>m>>n; for(int i=0;i<n;i++){ cin>>str[i]; } int j; int sum=0; int sum1[10000]={0}; for(int i=0;i<m;i++){ sum+=i; } int visit[26]={0}; int visitnum[10000]={0}; for(int i=0;i<n;i++){ for(int k=0;k<str[i].length();k++){ for( j=0;j<26;j++) { if(visit[j]==0){ if((str[i].at(k)-'A')==j){ visit[j]=1; visitnum[i]++; } } } } memset(visit,0,sizeof(visit)); } for(int i=0;i<n;i++){ if(visitnum[i]==m){ visitnum[i]=1000; } } int cpnum=0; for(int i=0;i<n-1;i++){ for(int j=i+1;j<=n-1;j++){ if(visitnum[i]+visitnum[j]==m) cpnum++; } } cout<<cpnum<<endl; }