読者です 読者をやめる 読者になる 読者になる

SRM604 Div2Easy - FoxAndWord

解法
二つの文字列を選んで、そのうち一つの区切る位置を決めて反転させる。これと他方の文字列が一致したらカウントする。

#include<bits/stdc++.h>
using namespace std;

// rep
#define REP(i,a,b) for(int i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)

class FoxAndWord {
public:
  int howManyPairs(vector <string> words) {
    int result = 0;
    rep(i, words.size()-1) {
      REP(j, i+1, words.size()) {
	REP(k, 1, words[i].size()) {
	  string sl = words[i].substr(0, k);
	  string sr = words[i].substr(k);
	  if(sr+sl == words[j]) {
	    result ++;
	    break;
	  }
	}
      }
    }
    return result;
  }
};