目录
情况1
循环输入。每次输入一个n,输出一个result。
1.第n天股票价格
题目描述:
经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天…依此类推。
为方便计算,假设每次涨和跌皆为1,股票初始单价也为1,请计算买股票的第n天每股股票值多少钱?
输入输出结果:
输入天数n,对应输出股票价格res。如图
#第n天股票价格
#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
int n;
while(cin>>n){
int type=1; //设置标识
int i=1; //记录走到了第几天
int j=1; //记录涨的价格
int res=1;
while(i<n){
if(type==1){
res+=j;
i+=j;
j+=1;
}
else{
res-=1;
i+=1;
//j在跌的时候不统计
}
type=type?0:1;
}
//用来把涨的空间每一个计算出来
while(i>n){
res-=1;
i-=1;
}
if(i==n){
cout<<res<<endl;
}
}
}
情况2 输入输出数组
2.1滑动窗口最大值
题目描述:
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。返回滑动窗口最大值。
输入输出结果:
#include<iostream>
#include<stdio.h>
#include<vector>
using namespace std;
int main(){
const int N=1e5;
int num[N];
int n,k;
vector<int> max;
int m;
//while(cin>>n>>k){
//cin>>n>>k;
scanf("%d%d", &n, &k);
for(int i=0;i<n;i++)
//cin>>num[i];
scanf("%d",&num[i]);
//第一层循环遍历0~n-k+1
for(int i=0;i<(n-k+1);i++){
m=num[i];
//第二层循环遍历i~i+k,寻找该滑动窗口最大值
for(int j=i+1;j<i+k;j++){
if(num[j]>m)
m=num[j];
}
max.push_back(m);
}
for(int i=0;i<max.size();i++){
cout<<max[i]<<",";
//cout<<endl;
}
//}
}
输入用cin和scanf都可以。以下是使用scanf示例结果。
2.2滑动窗口中位数
#include<stdio.h>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int N=1e5;
int num[N];
int main(){
int n,k;
cin>>n>>k;
for(int i=0;i<n;i++)
cin>>num[i];
vector<double> res;
double mid;
for(int i=0;i<n-k+1;i++){
vector<int> temp;
for(int j=i;j<i+k;j++){
temp.push_back(num[j]);
}
sort(temp.begin(),temp.end());
mid = k % 2 ? temp[(k-1)/2.0] : (temp[k/2.0] + temp[k/2-1])/2.0;
temp.clear();
res.push_back(mid);
}
for(int i=0;i<res.size();i++)
printf("%.1f ",res[i]);
}
情况3 输入两行字符数组
3.约德尔测试
1.使用c++string
string a,b;
cin>>a>>b;
int n=a.length();
2.使用c ,char a[];需要包含#include <string.h>
3.本题另一要点:输出用百分数表示。相似率为相同字符的个数/总个数,精确到百分号小数点后两位。
printf("%.2f%%\n",count*100.00/len);
4.完整代码
#include <stdio.h>
#include <string.h>
const int N=1000+5;
int main()
{
char s[N];
char ss[N];
scanf("%s",s);
scanf("%s",ss);
int len=strlen(s);
for(int i=0;i<len;i++)
{
if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')||(s[i]>='0'&&s[i]<='9'))
{
s[i]='1';
}
else
{
s[i]='0';
}
}
int count =0;
for(int j=0;j<len;j++)
{
if(s[j]==ss[j])
count++;
}
printf("%.2f%%\n",count*100.00/len);
return 0;
}