#19526: 請問如何才能符合題目的要求


bear490421408 (bear)

學校 : 不指定學校
編號 : 83658
來源 : [124.9.117.230]
最後登入時間 :
2023-12-06 23:15:30
e288. 互補CP -- APCS | From: [218.32.117.144] | 發表日期 : 2019-10-07 21:53

目標 解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;



}
 
ZeroJudge Forum