機試第一天2020.1.9

#include<iostream>
#include<string>
#include<vector>
#include<map>
using namespace std;

bool judge(string str);
void substr(string str);
bool Prime(int i);
int main()
{
	/*輸入一個只含有英文字母的字符串
	輸出最大回文子串的長度及此長度迴文子串的個數
	(迴文不區分大小寫)。
	*/
	//string input;
	//cin>>input;
	//substr(input);

	/*
	哥德巴赫猜想
	任何一個大於2的偶數均可表示爲兩個素數之和。
	輸入m, n(6<=m<=n<=50),
	則把[m, n]內的所有偶數表示成兩個素數之和的形式。
	輸出這些素數及其出線的次數,
	輸出次序按照素數出現的次數從多到少輸出;
	若出線次數相同,按照素數從大到小輸出;
	若偶數有多種素數相加形式,則把所有的情況都輸出,
	每種情況佔一行。
	*/
	
	return 0;
}
//判斷str是否是迴文字符串
bool judge(string str)
{
	for(int i = 0;i<str.length()/2;i++)
	{
		if(str[i]!=str[str.length()-1-i]) return false;
	}
	return true;
}

//暴力解法:二重循環確定子串範圍
void substr(string str)
{
	//將所有字符轉大寫
	for(int t = 0;t<str.length();t++)
		str[t] = toupper(str[t]);

	for(int i = str.length();i>1;i--)
	{
		bool flag=false;
		int count=0;
		for(int j = 0;j<str.length()-i+1;j++)
		{
			//cout<<"j:"<<j<<"i:"<<i;
			string sub = str.substr(j,i);
			//cout<<sub<<endl;
			if(judge(sub)==true) 
			{
				//cout<<"是迴文:"<<sub<<endl;
				flag = true;
				count++;
			}
		}
		if(flag==true) 
		{
			cout<<i<<" "<<count<<endl;
			return;
		}
	}
}

bool Prime(int i)
{
	//判斷是否爲素數
	for(int j=2;j<i;j++)
	{
		if(i%j==0) return false;
		
	}
	return true;
}

vector<map<int,int>> dicarji(vector<map<int,int>> v1,vector<map<int,int>> v2)
{
	vector<map<int,int>> res;
	for(int i=0;i<v1.size();i++)
	{
		for(int j=0;j<v2.size();j++)
		{
			map<int,int> n1 = v1[i];
			map<int,int> n2 = v2[j];
			map<int,int> m1,m2;



void gotbahe(int m;int n)
{
	
	//取m-n中的偶數進行處理
	for(int p=m,p<n+1;p++)
	{
		if(p%2==1) return;
		map<int,int> result
		for(int i=3;i<p-i+1;i++)
		{
			if(Prime(i)==true&&Prime(p-i)==true)
			{
				if(map.find(i)==-1) map[i]=1;
				else map[i]+=1;
				if(map.find(p-i)==-1) map[p-i]=1;
				else map[p-i]+=1;
			}

 

發佈了67 篇原創文章 · 獲贊 42 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章