小米笔试0919

算法卷 两个代码题
第一题带c个1的背包问题 100
第二题 两个数组可以交换对应位置问能不能得到递增或递减数组 100
全部评论
我也用0-1背包写的,为啥卡18%啊🤔️想问问佬怎么写的
1 回复 分享
发布于 2024-09-19 17:33 北京
public static void main(String[] args) { Scanner in = new Scanner(System.in); int T = in.nextInt(); while (T>0){ T--; int n = in.nextInt(); int[] a = new int[n]; int[] b = new int[n]; for (int i = 0; i < n; i++) { a[i] = in.nextInt(); } for (int i = 0; i < n; i++) { b[i] = in.nextInt(); } int k = 0; int preNum = -1; boolean flag = true; //尝试升序 while(k<n){ if(a[k]<preNum &amp;&amp; b[k]<preNum){ flag = false; break; } if(a[k]<b[k]){ if(a[k]>=preNum){ preNum = a[k]; }else{ preNum = b[k]; } }else { if(b[k]>=preNum){ preNum = b[k]; }else { preNum = a[k]; } } k++; } if (flag){ System.out.println("YES"); continue; }else{ //尝试降序 flag = true; preNum = Integer.MAX_VALUE; k=0; while(k<n){ if(a[k]>preNum &amp;&amp; b[k]>preNum){ flag = false; break; } if(a[k]>b[k]){ if(a[k]<=preNum){ preNum = a[k]; }else{ preNum = b[k]; } }else { if(b[k]<=preNum){ preNum = b[k]; }else { preNum = a[k]; } } k++; } if(flag){ System.out.println("YES"); }else{ System.out.println("NO"); } } } }
点赞 回复 分享
发布于 2024-09-19 18:02 四川
public static void main1(String[] args) { Scanner in = new Scanner(System.in); int t = in.nextInt(); while (t>0){ t--; int N,n,c; N = in.nextInt(); n = in.nextInt(); c = in.nextInt(); int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = in.nextInt(); } if(dfs(a,0,c,N)) System.out.println("YES"); else System.out.println("NO"); } } static boolean dfs(int[] a,int index,int c,int res){ if(res<=c) return true; if(index>=a.length) return false; boolean flag = false; if(res>= a[index]){ flag = dfs(a,index+1,c,res-a[index]); } if(flag) return flag; flag = dfs(a,index+1,c,res); return flag; }
点赞 回复 分享
发布于 2024-09-19 18:01 四川
大佬能私一下第一题的代码吗?
点赞 回复 分享
发布于 2024-09-19 17:35 重庆
为啥我第二题python写的只过45,感觉也没写错啊
点赞 回复 分享
发布于 2024-09-19 17:33 北京

相关推荐

站队站对牛:还是浙江学校欢迎
投递海康威视等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务