网站生成app免费杭州网站建设网页制作
目录
- 1.牛牛的快递(pass)
- 1.1解析
- 1.2代码
- 2.最小花费爬楼梯 (pass)
- 2.1解析
- 2.2代码
- 3.数组中两个字符串的最小距离 (pass)
- 3.1解析
- 3.2代码
1.牛牛的快递(pass)
牛牛的快递
1.1解析
1.2代码
#include <iostream>
#include <cmath>
using namespace std;int main() {float a;char b;cin>>a>>b;int price=0;//结果if(b=='y')price+=5;//加急if(a<=1.0) cout<<(price+20);else {price+=20;//先加上起步价a--;//price+=ceil(a);//向上取整函数if(a-(int)a>0)price+=(int)a+1;else price+=(int)a;cout<<price;}
}
2.最小花费爬楼梯 (pass)
最小花费爬楼梯
技能:线性dp
2.1解析
2.2代码
#include <iostream>
#include <vector>
using namespace std;int main() {int n=0;cin>>n;vector<int> cost(n);for(int i=0;i<n;i++)cin>>cost[i];vector<int> dp(n+1);for(int i=2;i<=n;i++)dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);cout<<dp[n];
}
3.数组中两个字符串的最小距离 (pass)
数组中两个字符串的最小距离
技能:哈希、双指针、字符串
3.1解析
3.2代码
//运行超时了
//O(N^2)
#include <iostream>
#include<vector>
#include<limits.h>
using namespace std;int main() {int n=0;cin>>n;string str1,str2;cin>>str1>>str2;vector<string> strs(n);for(auto& str:strs) cin>>str;int ret=INT_MAX;for(int i=0;i<n;i++){for(int j=0;j<n;j++)if((strs[i]==str1&&strs[j]==str2)||(strs[i]==str2&&strs[j]==str1))ret=min(ret,abs(i-j));}if(ret==INT_MAX)cout<<-1;elsecout<<ret;
}
//优化->时间复杂度:O(N)
#include <iostream>
#include<vector>
#include<limits.h>
using namespace std;int main() {int n=0;cin>>n;string str1,str2;cin>>str1>>str2;vector<string> strs(n);for(auto& str:strs) cin>>str;int prev1=-1,prev2=-1,ret=INT_MAX;for(int i=0;i<n;i++){if(strs[i]==str1)//向前找最近的str2{prev1=i;if(prev2!=-1)ret=min(ret,prev1-prev2);}if(strs[i]==str2)//向前找最近的str1{prev2=i;if(prev1!=-1)ret=min(ret,prev2-prev1);}}if(prev1==-1||prev2==-1)//判断str1/str2是否存在cout<<-1;elsecout<<ret;
}