23
December
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
#include<iostream>
#include<string>
using namespace std;
class AlienAndPassword{
public:
int getNumber(string S){
int cnt=0;
for(int i=1;i<S.size();i++){
if(S[i-1] != S[i]) cnt++;
}
return cnt+1;
}
};
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
class AlienAndGame{
public:
int getNumber(vector<string> board){
int MAX;
int ans=1;
MAX = min(board[0].size(),board.size());
for(int length=1;length<=MAX;length++){
for(int i=0;i<board.size()-length+1;i++){
for(int j=0;j<board[0].size()-length+1;j++){
int fuga=0;
for(int k=0;k<length;k++){
int hoge=0;
for(int l=0;l<length-1;l++){
if(board[i+k][j+l] == board[i+k][j+l+1])
hoge++;
}
if(hoge+1==length)fuga++;
}
if(fuga==length)ans=length;
}
}}
return ans*ans;
}
};
#include <algorithm>
#include <iostream>
#include <map>
#include <numeric>
#include <set>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
#define FOR(i,s,e) for (int i = int(s); i != int(e); i++)
#define FORIT(i,c) for (typeof((c).begin()) i = (c).begin(); i != (c).end(); i++)
#define ISEQ(c) (c).begin(), (c).end()
class PowerOfThreeEasy {
public: string ableToGet(int x, int y) {
while(1){
if((x%3==0&&y%3==1)||(x%3==1&&y%3==0)){
x/=3;
y/=3;
}
else{
if(x==0&&y==0)return "Possible";
return "Impossible";
}
}
}
};
#include <iostream>
#include <string>
#include <vector>
#include <functional>
#include <climits>
#include <algorithm>
#include <map>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#define N 4
#define M 20
//N要素数
//M=シャッフルする回数
using namespace std;
bool check(int v[N]){
for(int i=0;i<N;i++){
if(v[i]==N)return true;
}
return false;
}
void showList(int manRank[N][N],int womanSuki[N][N]){
cout << "男性希望リスト" << endl;
for(int i=0;i<N;i++){
cout << i << ":";
for(int j=0;j<N;j++){
cout << manRank[i][j];
if(j!=N-1)cout << ",";
}
cout << endl;
}
cout << "女性希望リスト" << endl;
int womanRank[N][N];
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
womanRank[i][womanSuki[i][j]]=j;
}
}
for(int i=0;i<N;i++){
cout << i << ":";
for(int j=0;j<N;j++){
cout << womanRank[i][j];
if(j!=N-1)cout << ",";
}
cout << endl;
}
}
void showMatch(int manMarriage[N],int womanMarriage[N]){
cout << "男性-女性" << endl;
for(int i=0;i<N;i++){
cout << i << "-" << manMarriage[i] << endl;
}
}
int main(){
int manRank[N][N];
int womanSuki[N][N];
srand((unsigned) time(NULL));
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
manRank[i][j]=j;
womanSuki[i][j]=j;
}
}
for(int i=0;i<N;i++){
for(int j=0;j<M;j++){
int hoge;
int c1=rand() % N;
int c2=rand() % N;
hoge = manRank[i][c1];
manRank[i][c1]=manRank[i][c2];
manRank[i][c2]=hoge;
c1=rand() % N;c2=rand() % N;
hoge = womanSuki[i][c1];
womanSuki[i][c1]=womanSuki[i][c2];
womanSuki[i][c2]=hoge;
}
}
showList(manRank,womanSuki);
//誰と結婚しているか
int womanMarriage[N];
int manMarriage[N];
//プロポーズ回数
int manDraft[N];
for(int i=0;i<N;i++){
womanMarriage[i]=N;
manMarriage[i]=N;
manDraft[i]=0;
}
//独身男性がいる限りループ
int cnt=0;
while(check(manMarriage)){
for(int i=0;i<N;i++){
if(manMarriage[i]==N){//iが未婚男性の場合
int hope = manRank[i][manDraft[i]];//希望女性
if(womanMarriage[hope]==N){//希望女性が未婚
manMarriage[i]=hope; //結婚
womanMarriage[hope]=i;
manDraft[i]++;
}
else{//希望女性が既婚
if(womanSuki[hope][i]<womanSuki[hope][womanMarriage[hope]]){//女性にとって今プロポーズされた男性の方が良い時
manMarriage[womanMarriage[hope]]=N;//NTRれた人は未婚に
womanMarriage[hope]=i; //結婚しなおし
manMarriage[i]=hope;
manDraft[i]++;
}
else{//NTR失敗
manDraft[i]++;//プロポーズカウント
}
}
}
}
}
showMatch(manMarriage,womanMarriage);
return 0;
}
#include <algorithm>
#include <iostream>
#include <map>
#include <numeric>
#include <set>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
#define FOR(i,s,e) for (int i = int(s); i != int(e); i++)
#define FORIT(i,c) for (typeof((c).begin()) i = (c).begin(); i != (c).end(); i++)
#define ISEQ(c) (c).begin(), (c).end()
class FoxAndWord {
public: int howManyPairs(vector<string> words) {
int cnt=0;
for(int i=0;i<words.size()-1;i++){
for(int j=i+1;j<words.size();j++){
if(words[i].size() == words[j].size()){
for(int k=0;k<words[i].size();k++){
if(words[i].substr(k+1) + words[i].substr(0,k+1) == words[j]){
cnt++;
break;
}
}}
}
}
return cnt;
}
};
#include<iostream>
#include<vector>
#include<map>
#include<functional>
#include<algorithm>
#include<string>
#include<climits>
using namespace std;
class SplitIntoPairs{
public:
int makepairs(vector<int> A,int X){
sort(A.begin(),A.end());
int cnt=0;
for(int i=0;i<A.size()-1;i+=2)
if((long long)A[i]*A[i+1] >= X)cnt++;
return cnt;
}
};