⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1274.cpp

📁 ZOJ 动态规划算法题目入门与提高 源代码
💻 CPP
字号:
#include<iostream>
#include<fstream>
#include<string>
#include<algorithm>
#include<sstream>
#include<vector>
using namespace std;
class item{
public:
	string s;
	int n;
	item(string a,int b){s=a;n=b;}
	item(){}
	item(const item & ss){s=ss.s;n=ss.n;}
};
void init(string & s){
	if(s.length()==1){
        if(s[0]<='z'&&s[0]>='a') s[0]+=('A'-'a');
	}
	else{
		if(s[0]<='z'&&s[0]>='a') s[0]+=('A'-'a');
        if(s[1]=='b') {s[1]='#';s[0]-=1;}
		if(s[0]<'A') s[0]='G';
	}
}
int covtonum(string s){
    if(s=="A") return 1;
    if(s=="A#") return 2;
	if(s=="B") return 3;
	if(s=="C") return 4;
	if(s=="C#") return 5;
	if(s=="D") return 6;
	if(s=="D#") return 7;
	if(s=="E") return 8;
	if(s=="F") return 9;
	if(s=="F#") return 10;
	if(s=="G") return 11;
	if(s=="G#") return 12;
}
int cmp(const item & a,const item & b){
    return a.n<b.n;
}
void deal(item & a,item & b,item& c,string s){
	cout<<s<<" ";
	vector<item> vec(3); vec[0]=a; vec[1]=b; vec[2]=c;
	sort(vec.begin(),vec.end(),cmp);
	if(vec[0].n+4==vec[1].n&&vec[1].n+3==vec[2].n){
       cout<<"is a "<<vec[0].s<<" Major chord.\n";
	   return;
	}
	if(vec[0].n+3==vec[1].n&&vec[1].n+4==vec[2].n){
       cout<<"is a "<<vec[0].s<<" Minor chord.\n";
	   return;
	}
	vec[0].n+=12;
	sort(vec.begin(),vec.end(),cmp);
	if(vec[0].n+4==vec[1].n&&vec[1].n+3==vec[2].n){
       cout<<"is a "<<vec[0].s<<" Major chord.\n";
	   return;
	}
	if(vec[0].n+3==vec[1].n&&vec[1].n+4==vec[2].n){
       cout<<"is a "<<vec[0].s<<" Minor chord.\n";
	   return;
	}
	vec[0].n+=12;
	sort(vec.begin(),vec.end(),cmp);
	if(vec[0].n+4==vec[1].n&&vec[1].n+3==vec[2].n){
       cout<<"is a "<<vec[0].s<<" Major chord.\n";
	   return;
	}
	if(vec[0].n+3==vec[1].n&&vec[1].n+4==vec[2].n){
       cout<<"is a "<<vec[0].s<<" Minor chord.\n";
	   return;
	}
	cout<<"is unrecognized.\n";
	return;
}
int main(){
  //ifstream cin("in.txt");
  int n1,n2,n3;
  string s1,s2,s3,s;
  while(getline(cin,s)){
	  istringstream is(s);
	  is>>s1>>s2>>s3;
	  init(s1);init(s2);init(s3);
	  n1=covtonum(s1);n2=covtonum(s2);n3=covtonum(s3);
	  item a(s1,n1),b(s2,n2),c(s3,n3);
	  deal(a,b,c,s);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -