促销活动
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
string str;
vector<string> vt;
int index;
string pre;
int num;
int count=0;
while(getline(cin,str))
{
vt.push_back(str);
}
sort(vt.begin(),vt.end());
index=vt[0].find('.');
pre=vt[0].substr(0,index);
num=atoi(vt[0].substr(index+1).c_str());
count++;
for(int i=1;i<vt.size();i++)
{
index=vt[i].find('.');
if(vt[i].substr(0,index)==pre)
{
if(atoi(vt[i].substr(index+1).c_str())==num)
{
count++;
}
}
else
{
count++;
}
pre=vt[i].substr(0,index);
num=atoi(vt[i].substr(index+1).c_str());
}
cout<<count<<endl;
}
打印出所有水仙花
#include<iostream>
#include<math.h>
using namespace std;
bool isOk(int num)
{
int tmp=num;
int sum=0;
int remain=0;
while(tmp)
{
remain=tmp%10;
tmp=tmp/10;
sum+=(int)pow(remain,3);
}
if(sum==num)
return true;
else
return false;
}
int main()
{
int sum=0;
int count=0;
for(int i=100;i<=999;i++)
{
if(isOk(i))
{
count++;
cout<<"第"<<count<<"个水仙花数:"<<i<<endl;
sum+=i;
}
}
cout<<"水仙花数总和为:"<<sum<<endl;
return 0;
}
独一无二的出现次数
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool isSpecial(vector<int>vt)
{
for(int i=0;i<vt.size()-1;i++)
{
for(int j=i+1;j<vt.size();j++)
{
if(vt[i]==vt[j])
return false;
}
}
return true;
}
int main()
{
int num;
int count=0;
vector<int> vt;
vector<int> vt1;
while(cin>>num){
vt.push_back(num);
}
sort(vt.begin(),vt.end());
int tmp=vt[0];
count++;
for(int i=1;i<vt.size();i++)
{
if(vt[i]==tmp)
{
count++;
}
else{
vt1.push_back(count);
count=1;
tmp=vt[i];
}
}
vt1.push_back(count);
if(isSpecial(vt1))
cout<<"true"<<endl;
else
cout<<"false"<<endl;
}
最长有效括号
#include<iostream>
#include<stack>
#include<algorithm>
#include<math.h>
using namespace std;
int max_length(string str)
{
int len=str.length();
int i,start=0;
stack<int> st;
int res=0;
for(i=0;i<len;i++)
{
if(str[i]=='(')
{
st.push(i);
}
else
{
if(st.empty())
{
start=i+1;
}
else
{
st.pop();
res=st.empty()?max(res,i-start+1):max(res,i-st.top());
}
}
}
return res;
}
int main()
{
string str="(((((())))))";
cout<<max_length(str)<<endl;
}
多道批处理调度
#include<iostream>
#include<algorithm>
#include<math.h>
#include<vector>
using namespace std;
int main()
{
int m,n;
int i,j;
cin>>m>>n;
vector<int> vt;
vt.resize(n);
int tmp;
int sum=0;
for(i=0;i<n;i++)
{
cin>>vt[i];
}
sort(vt.begin(),vt.end());
for(i=0;i<n;i++)
{
tmp=vt[i];
if(i+m<n){
sum+=tmp;
for(j=i;j<i+m;j++)
{
vt[j]-=tmp;
}
}
else{
sum+=vt[n-1];
break;
}
}
cout<<sum<<endl;
}
股票最大收益
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int maxProfit(vector<int>& prices)
{
int i,s,res;
s=prices[0];
res=0;
for(i=0;i<prices.size();i++)
{
s=min(s,prices[i]);
res=max(res,prices[i]-s);
}
return res;
}
int main()
{
int a[]={3,4,5,6,5,8};
vector<int> vt(a,a+6);
cout<<maxProfit(vt)<<endl;
}
在字符串中找出连续最长的数字串
#include<iostream>
#include<algorithm>
#include<math.h>
#include<vector>//在字符串中找出连续最长的数字串abcd12345ed125ss123456789
using namespace std;
struct cmpstr{
bool operator()(const string &k1,const string &k2)
{
return k1.length()>k2.length();
}
};
int main()
{
vector<string> vt;
string str;
cin>>str;
int index;
int count=0;
for(int i=0;i<str.length();i++)
{
if(str[i]>='0'&& str[i]<='9')
{
if(!count)
index=i;
count=1;
}
else{
if(count)
vt.push_back(str.substr(index,i-index));
count=0;
index=0;
}
}
if(index)
vt.push_back(str.substr(index));
sort(vt.begin(),vt.end(),cmpstr());
cout<<vt[0]<<endl;
}