目录
067:打怪
068:字符串分类
069:城市群数量
067:打怪
题目链接:打怪 (nowcoder.com)
题目:
题解:
直接计算结果:
1.一只怪物能抗几次攻击 int m=(H/a)+(H%a==0?0:1);
2.杀死一只怪物,玩家要抗几次攻击 int n=m-1;
*3.杀死一只怪物,玩家掉多少血 int x=n*A;
4.玩家能杀死多少怪物 int ret=h/x-(h%x==0?1:0);
#include<iostream>
using namespace std;
int t,h,a,H,A;
int main()
{
cin>>t;
while(t--)
{
cin>>h>>a>>H>>A;
if(A==0 || a>=H)
{
cout<<-1<<endl;
}
else
{
int m=(H/a)+(H%a==0?0:1);
int n=m-1;
int x=n*A;
int ret=h/x-(h%x==0?1:0);
cout<<ret<<endl;
}
}
return 0;
}
068:字符串分类
题目链接:字符串分类_牛客笔试题_牛客网 (nowcoder.com)
题目:
题解:
1.将字符串进行排序
2.每个字符串依次存入去重容器 unordered_set 中
3.容器中的元素个数即为字符串的种类数
#include <iostream>
#include<string>
#include<algorithm>
#include<unordered_set>
using namespace std;
int N=0,ret=0;
string s;
unordered_set<string> hashSet;
int main()
{
cin>>N;
while(N--)
{
cin>>s;
sort(s.begin(),s.end());
hashSet.insert(s);
}
cout<<hashSet.size()<<endl;
return 0;
}
069:城市群数量
题目链接:城市群数量_牛客题霸_牛客网 (nowcoder.com)
题目:
题解:
深度优先搜索:
1.将每个没有标记过的城市 i 进行一次dfs。
2.dfs中遍历每个城市 j ,当在矩阵m中有m[i][j]=1(即有相连关系时),则继续dfs向深搜索。
3.dfs的同时将搜索过的城市用bool数组vis标记下。
class Solution {
public:
bool vis[210]={0};
int citys(vector<vector<int> >& m)
{
int n=m.size();
int ret=0;
for(int i=0;i<n;i++)
{
if(!vis[i])
{
ret++;
dfs(m,i);
}
}
return ret;
}
void dfs(vector<vector<int>>& m,int pos)
{
vis[pos]=true;
for(int i=0;i<m.size();i++)
{
if(!vis[i] && m[pos][i])
{
dfs(m,i);
}
}
}
};