目录
打怪(模拟)
题目解析
讲解算法原理
编写代码
字符串的分类(哈希/排序)
题目解析
讲解算法原理
编写代码
打怪(模拟)
题目解析
1.题目链接:登录—专业IT笔试面试备考平台_牛客网
2.题目描述
题目描述
你是一个勇士,现在你准备去森林刷毛球怪,你有两个属性(血量,攻击力),毛球怪也有这两个属性。当你遭遇一只毛球怪时你们会进入战斗,然后你和毛球怪轮流攻击(你先手),每次使对方的血量减去自己攻击力的数值,当一方的血量小于等于 0 时死亡。现在你想知道在自己活着的前提下最多杀死几只毛球怪。
输入描述:
第一行一个正整数t,代表测试数据组数。
第二行四个正整数h,a,H,A,代表你的血量和攻击力以及毛球怪的血量和攻击力。
所有整数大小不超过1000。
输出描述:
共 t 行,每行一个整数x,代表最多能杀死多少毛球怪。如果能杀死无数只,输出-1。
示例1
输入
1 5 1 2 1
1
5 1 2 1输出
4
4
讲解算法原理
解法:
算法思路:
根据题意模拟,注意⼀下细节就好了。
编写代码
c++算法代码:
#include <iostream>
using namespace std;
int t;
int h, a, H, A;
int fun()
{if(a >= H) return -1;int m = (H / a) + (H % a != 0 ? 1 : 0); // 怪物能抗⼏次int n = m - 1; // 玩家被攻击⼏次int x = n * A; // 杀死⼀只怪物的时候,玩家会掉多少⾎ int ret = h / x - (h % x == 0 ? 1 : 0); return ret;
}
int main()
{cin >> t;while(t--){cin >> h >> a >> H >> A; cout << fun() << endl; }return 0;
}
java算法代码:
import java.util.*;
public class Main
{public static void main(String[] args){Scanner in = new Scanner(System.in); int t = in.nextInt();int h, a, H, A; while(t-- != 0) { h = in.nextInt(); a = in.nextInt(); H = in.nextInt(); A = in.nextInt(); if(a >= H) System.out.println(-1); else{int m = H / a + (H % a != 0 ? 1 : 0); // 怪物能抗⼀下int n = m - 1; // 杀死⼀只怪物的时候,玩家被攻击⼏下 int x = n * A; // 杀死⼀只怪物的时候,玩家掉的⾎量 int ret = h / x - (h % x == 0 ? 1 : 0); System.out.println(ret); } } }
}
字符串的分类(哈希/排序)
题目解析
1.题目链接:字符串分类_牛客笔试题_牛客网
2.题目描述
牛牛有N个字符串,他想将这些字符串分类,他认为两个字符串A和B属于同一类需要满足以下条件:
A中交换任意位置的两个字符,最终可以得到B,交换的次数不限。比如:abc与bca就是同一类字符串。
现在牛牛想知道这N个字符串可以分成几类。输入描述:
首先输入一个正整数N(1 <= N <= 50),接下来输入N个字符串,每个字符串长度不超过50。
输出描述:
输出一个整数表示分类的个数。
示例1
输入
4
abcd
abdc
dabc
bacd输出
1
讲解算法原理
解法:
算法思路:
将字符串排序后,丢进能去重的哈希表⾥⾯就好了。
编写代码
c++算法代码:
#include <iostream>
#include <string>
#include <algorithm>
#include <unordered_set>
using namespace std;
int n;
string s;
int main()
{cin >> n;unordered_set<string> hash;while(n--){cin >> s;sort(s.begin(), s.end()); hash.insert(s);}cout << hash.size() << endl;return 0;
}
java算法代码:
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main
{public static void main(String[] args) {Scanner in = new Scanner(System.in); int n = in.nextInt();HashSet<String> set = new HashSet<>();while(n-- != 0){char[] s = in.next().toCharArray(); Arrays.sort(s); set.add(new String(s));}System.out.println(set.size());}
}