网易雷火4.23笔试,做了数独和hp题,剩下两个不会。。

第一题,让判断六宫格数独是否合理,其实就判断行/列/宫是否有重复
#include <bits/stdc++.h>
using namespace std;
/*数独

判断行是否重复
判断列是否重复
判断宫是否重复

*/

int arr[6][6];


int main(){
    int n=0;
    scanf("%d",&n);
    int cnt=0;
    while(n--){
        for(int i=0;i<6;i++){
            int temp=0;
            cin>>temp;
            for(int j=5;j>=0;j--){  
                while(temp){
                    arr[i][j]=temp%10;
                    temp = temp/10;
                }
            }
        }
        //判断是否合法
        
        for(int i=0;i<6;i++){
            for(int j=0;j<6;j++){
                //检查本列
                for(int col=j;col<6;col++){
                    if(arr[i][j]==arr[i][col])
                        break;
                }
                //检查本行
                for(int row=i;row<6;row++){
                    if(arr[i][j]==arr[row][j])
                        break;
                }
                //检查本宫
                for(int k=0;k<6;k++){
                    if(arr[i][j]==arr[(i/2)*3+k/3][(j/3)*2+k%3])
                        break;
                }
            }
        }
        cnt++;
    }
    cout<<cnt<<endl;
}

第二题,是放技能,原始hp达到[lowerHp,upperHp]就算boos进入虚弱状态,主角有n个技能,第i个技能的伤害值是Di,而且Di是升序排列
所以我们肯定先放大招,大招放过了,打得hp比lowerHp还低那肯定不行,换一个小点的招,如果还不行,说明最小的技能也会导致boss直接掉血到lowerHp下,即题目说的boss无法进入虚弱状态,回0即可
#include <bits/stdc++.h>
using namespace std;
/*
动态规划
base case:hp在[lowerHp,upperHp]之间时则可以返回
状态:hp
选择:每选择一种技能,就减少了hp,所以所有技能的伤害值就是选择
dp函数的定义:参数=状态,返回值=最少攻击次数
∴ dp(hp)表示,输入一个hp,返回达到hp下降至区间所需的最少攻击次数
其实这个题应该动规做挺好的,但是我没想出来。。。
*/



int main(){
    int m;
    cin>>m;
    while(m--){
        int hp=0,upperHp=0,lowerHp=0,n;
        cin>>hp>>lowerHp>>upperHp>>n;
        int arr[n];
        for(int i=0;i<n;i++){
            int t=0;
            cin>>t;
            arr[i]=t;
        }

        int cnt=0;
        while(hp>upperHp){
            for(int i=n-1;i>=0;i--){//从大招放起
                if(hp-arr[i]<lowerHp){
                    continue;//差值较小,换一个小点的伤害
                }
                hp -= arr[i];
                cnt++;
            }    
        }  
        if(hp<=upperHp && hp>=lowerHp){
            cout<<cnt<<endl;
        }
        if(hp<lowerHp) cout<<"0"; 
    }        
}
第三题卡在了字符串的某几个位置子串从十六进制转变成整数或字符串上,主要是没想出来怎么选择rpc命令的子串位置,时间和脑子不够,只写了一点点

#网易雷火实习笔试##实习##笔经##C/C++#
全部评论
要是我学了背包,这道题也秒了
点赞 回复 分享
发布于 2022-05-04 22:58
我没看过背包这道题没做出来,不过第三题做了出来
点赞 回复 分享
发布于 2022-05-04 22:57
通知面试了吗?
点赞 回复 分享
发布于 2022-04-25 23:14
第二题你思路错啦,你这样只考虑了大招退回一次的情况,有可能伤害高的技能放6次5次都不行,但退回到4次时配合小技能是可以的。笔试需要点击提交并保存才能看到这道题过了多少,光自我测试不行的。 这题还是得动态规划做。
点赞 回复 分享
发布于 2022-04-24 18:19
可能需要用dp
点赞 回复 分享
发布于 2022-04-24 14:26
大佬,第二题是全a吗
点赞 回复 分享
发布于 2022-04-24 14:15

相关推荐

挣K存W养DOG:我记得好多人说这个公司就是白嫖方案的,现在有大体方案要让你给他展示实现细节了,也是无敌了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 18:57
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务