网易笔试的积木和跳柱子有大佬做出来吗?

RT #网易##笔试题目#
全部评论
跳柱子 #include<bits/stdc++.h> #define MP make_pair #define PB emplace_back using namespace std; typedef long long ll; template<typename T> inline T read(T&x){     x=0;int f=0;char ch=getchar();     while (ch<'0' || ch>'9') f|=(ch=='-'),ch=getchar();     while (ch>='0'&& ch<='9') x=x*10+ch-'0',ch=getchar();     return x=f?-x:x; } const int N=1e3+10; int T,n,k,i,j,h[N]; bool dp[N][2]; int main(){ for (read(T);T--;){ read(n),read(k); for (i=1;i<=n;++i) read(h[i]),dp[i][0]=dp[i][1]=0; dp[1][0]=1; for (i=2;i<=n;++i){ for (j=1;j<=i;++j)if(i-j>=1 && i-j<=k){ if (h[j]>=h[i]){ dp[i][0]|=dp[j][0]; dp[i][1]|=dp[j][1]; } dp[i][1]|=dp[j][0]; } } if (dp[n][0] || dp[n][1]) puts("YES"); else puts("NO"); } return 0; } 积木 #include<bits/stdc++.h> #define MP make_pair #define PB emplace_back using namespace std; typedef long long ll; template<typename T> inline T read(T&x){     x=0;int f=0;char ch=getchar();     while (ch<'0' || ch>'9') f|=(ch=='-'),ch=getchar();     while (ch>='0'&& ch<='9') x=x*10+ch-'0',ch=getchar();     return x=f?-x:x; } const int N=1e5+10; int T,n,i; ll m,h[N]; int main(){ for (read(T);T--;){ read(n),read(m); for (i=0;i<n;++i) read(h[i]); bool flag=0; for (i=0;i<n;++i){ if (h[i]>i) m+=h[i]-i; else{ if (i-h[i]>m){ flag=1; break; } else m-=i-h[i]; } }  puts(flag?"NO":"YES"); } return 0; }
点赞 回复 分享
发布于 2019-09-21 17:00
import java.util.Scanner; public class Main {     public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         int t = scanner.nextInt();         for (int i = 0; i < t; i++) {             int n = scanner.nextInt();             int k = scanner.nextInt();             int[] heights = new int[n];             for (int j = 0; j < n; j++) {                 heights[j] = scanner.nextInt();             }             if (getResult(heights, k)) {                 System.out.println("YES");             } else {                 System.out.println("NO");             }         }     }     public static boolean getResult(int[] heights, int k) {         boolean[][] dp = new boolean[heights.length][2];         dp[0][0] = true;         dp[0][1] = true;         for (int i = 1; i < heights.length; i++) {             for (int j = i - 1; j >= 0 && j >= i - k; j--) {                 if (heights[i] <= heights[j]) {                     dp[i][0] = true;                     if (dp[j][1]) {                         dp[i][1] = true;                         break;                     }                 }             }             if (!dp[i][0]) {                 for (int j = i - 1; j >= 0 && j >= i - k; j--) {                     if (dp[j][1]) {                         dp[i][0] = true;                         break;                     }                 }             }         }         return dp[heights.length - 1][0];     } } 有大佬能帮我看看这个跳柱子的解法哪里有问题吗?我只能AC 10%。
1 回复 分享
发布于 2019-09-21 17:32
大佬,和相等的怎么解决的,我只过了60
点赞 回复 分享
发布于 2019-09-21 16:01
我用的dp做的跳积木。
点赞 回复 分享
发布于 2019-09-21 16:53
跳桩子BFS可以a
点赞 回复 分享
发布于 2019-09-21 16:54

相关推荐

蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-27 10:28
点赞 评论 收藏
分享
评论
2
2
分享
牛客网
牛客企业服务