70,020
社区成员




int _tmain(int argc,_TCHAR* argv[])
{
size_t fib[] = {1,2,3,5,8,13,21,34};
string str,tempstr;
cin >> str;
tempstr = str;
auto it = unique(tempstr.begin(),tempstr.end());
tempstr.erase(it,tempstr.end()); // 去重(已假定是有序的,如果无序则先排序)
for (auto itstr = str.begin(); itstr != str.end();) // 遍历输入数据
{
string s(itstr,str.end());
for (int i = 0; i < 8;i++)
{
if (fib[i] <= tempstr.size()) // 符合FIB的不同字符有多少,则输出多少次
{
auto singlechar = tempstr[i];
auto findchar = s.find(singlechar);
for (auto itchar = s.begin() + findchar; itchar != s.end()&&*itchar == singlechar;itchar++)
{ // 输出,相同字符连续输出
if (*s.begin() == singlechar) // 每次去掉第一个相同的字符
{
itstr++;
}
cout << string(s.begin(),itchar+1) << endl;
}
}
else
{
tempstr.erase(tempstr.begin()); // 字典输出需要
break;
}
}
}
return 0;
}
size_t fib[] = {1,2,3,5,8,13,21,34};
string str,tempstr;
cin >> str;
tempstr = str;
auto it = unique(tempstr.begin(),tempstr.end());
tempstr.erase(it,tempstr.end());
for (auto itstr = str.begin(); itstr != str.end();)
{
string s(itstr,str.end());
for (int i = 0; i < 8;i++)
{
if (fib[i] <= tempstr.size())
{
auto singlechar = tempstr[i];
auto findchar = s.find(singlechar);
for (auto itchar = s.begin() + findchar; itchar != s.end()&&*itchar == singlechar;itchar++)
{
if (*s.begin() == singlechar)
{
itstr++;
}
cout << string(s.begin(),itchar+1) << endl;
}
}
else
{
tempstr.erase(tempstr.begin());
break;
}
}
}
int fib(int a)
{
if (a==0)
return 0;
else if(a==1 || a==2)
return 1;
else
return fib(a-1)+fib(a-2);
}
bool isfib(int m)
{
int i=0,iFib;
bool bFib = false;
while(true)
{
iFib = fib(i);
if (iFib < m)
{
i++;
}
else if (iFib == m)
{
bFib = true;
break;
}
else
{
break;
}
}
return bFib;
}
使用:if (isfib(ixx)){是}else{不是。。。}
#include<iostream>
#include <algorithm>
#include <set>
using namespace std;
string s;
set<string> result;
int fib[]={1, 2, 3, 5, 8, 13, 21, 34};
bool isfib(int i) {
return *lower_bound(fib,fib+8,i)==i;
}
void sub(){
for(int i=0;i<(int)s.length();i++){
for(int j=i;j<(int)s.length();j++){
set<char> dif;
for(int k=i;k<=j;k++) dif.insert(s[k]);
if(isfib(dif.size())) result.insert(string(&s[i],&s[j+1]));
}
}
for(auto &k : result) cout<<k<<endl;
}
int main()
{
while(cin>>s){
result.clear();
sub();
}
}
#include "stdafx.h"
#include <string>
#include <map>
#include <iostream>
int main()
{
string str;
cin>>str;
//多输出了aabcd,abcd,英语渣渣看不懂题目,你教我题目说的啥我应该就能写。。。
map<string,int> imap;
int length = str.length();
int iCount = 0;
for (int i=0;i!=length;i++)
{
char temp[32] = {0};
string str_temp = str.substr(i);
int templen = str_temp.length();
for(int j=0;j!=templen;j++)
{
strncpy(temp,str_temp.c_str(),j+1);
if (imap.find(temp)==imap.end())
{
iCount++;
imap.insert(make_pair(temp,iCount));
cout<<temp<<endl;
}
}
}
getchar();
return 0;
}