目录
1.发邮件
链接:发邮件__牛客网
来源:牛客网
[编程题]发邮件
- 热度指数:3846 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
- 算法知识视频讲解
NowCoder每天要给很多人发邮件。有一天他发现发错了邮件,把发给A的邮件发给了B,把发给B的邮件发给了A。于是他就思考,要给n个人发邮件,在每个人仅收到1封邮件的情况下,有多少种情况是所有人都收到了错误的邮件?
即没有人收到属于自己的邮件。输入描述:
输入包含多组数据,每组数据包含一个正整数n(2≤n≤20)。
输出描述:
对应每一组数据,输出一个正整数,表示无人收到自己邮件的种数。示例1
输入
2<br/>3输出
1<br/>2
f(n) =(n-1)*(f(n-1)+f(n-2))
- 全部代码
// write your code here
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
int n = sc.nextInt();
long[] arr = new long[22];
arr[1] = 0;
arr[2] = 1;
arr[3] = 2;
for (int i = 4; i < arr.length; i++){
arr[i] = (i-1)*(arr[i-1]+arr[i-2]);
}
System.out.println(arr[n]);
}
}
}
2.最长上升子序列
链接:最长上升子序列__牛客网
来源:牛客网
[编程题]最长上升子序列
- 热度指数:4784 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
- 算法知识视频讲解
广场上站着一支队伍,她们是来自全国各地的扭秧歌代表队,现在有她们的身高数据,请你帮忙找出身高依次递增的子序列。 例如队伍的身高数据是(1、7、3、5、9、4、8),其中依次递增的子序列有(1、7),(1、3、5、9),(1、3、4、8)等,其中最长的长度为4。
输入描述:
输入包含多组数据,每组数据第一行包含一个正整数n(1≤n≤1000)。 紧接着第二行包含n个正整数m(1≤n≤10000),代表队伍中每位队员的身高。
输出描述:
对应每一组数据,输出最长递增子序列的长度。示例1
输入
7 1 7 3 5 9 4 8 6 1 3 5 2 4 6输出
4 4
- 全部代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
int n = sc.nextInt();
int[] m = new int[n];
for (int i = 0; i < n; i++) {
m[i] = sc.nextInt();
}
int[] dp = new int[n];
dp[0] = 0;
int max = 0;
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
if (m[j] < m[i]) {
dp[i] = Math.max(dp[j] + 1, dp[i]);
if (max < dp[i]) {
max = dp[i];
}
}
}
}
System.out.println(max + 1);
}
}
}