腾讯笔试题 第一批

好像有好几套卷子 我就分享自己的


今天在公司写的代码,再不回宿舍赶不上末班车🤣提前半小时交卷了。。。


在回宿舍地铁上,好像手机不能贴代码?那我直接文字粘贴了。。。//现在已经用插入代码了


第一题 修栅栏 AC100
作者:happyGirl122
链接:https://www.nowcoder.com/discuss/226300
来源:牛客网

#include<bits/stdc++.h>
using namespace std;
 
int main()
{
    int n,k,i,j,a[150000],b[150000],min=0,minIndex=0,temp;
    cin>>n;//输入样例个数
    cin>>k;//输入拔草长度 
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    for(i=0;i<k;i++)
    {
        min+=a[i];
    }
    for(i=0;i<n-k+1;i++)
    {
        temp=0;
        for(j=i;j<i+k;j++)
        {
            temp+=a[j];
        }
        if(temp<min)
        {
            min=temp;minIndex=i;
        }
    }
    minIndex++;
    cout<<minIndex<<endl;
    return 0;
}

第一题简直不能更简单,就不多说了


第二题 拆零件

就是那个.和X的题 我觉得我做的是对的 样例能通过 就是复杂度太高了 求大神指点

作者:happyGirl122
链接:https://www.nowcoder.com/discuss/226300
来源:牛客网

#include<bits/stdc++.h>
using namespace std;
int a[500][500],n,m,endI,endJ,success;
int visit(int i, int j)
{
    if(i == endI && j == endJ)
    {
        success = 1;return 1;
    }    
     
    if(j+1<m) 
    {
        if(a[i][j+1]>0)
        {
            a[i][j+1]--;visit(i, j+1);a[i][j+1]++;
        }
    }
     
    if(i+1<n) 
    {
        if(a[i+1][j]>0)
        {
            a[i+1][j]--;visit(i+1, j);a[i+1][j]++;
        }
    }
     
    if(j-1>=0) 
    {
        if(a[i][j-1]>0)
        {
            a[i][j-1]--;visit(i, j-1);a[i][j-1]++;
        }
    }
     
    if(i-1>=0) 
    {
        if(a[i-1][j]>0)
        {
            a[i-1][j]--;visit(i-1, j);a[i-1][j]++;
        }
    }
    return success;
}
 
void lingJian(int n,int m)
{
    char temp[500];
    int i,j,s1,s2,f1,f2;
    gets(temp);//接收回车 
    for(i=0;i<n;i++)
    {
        gets(temp);
        for(j=0;j<m;j++)
        {
            if(temp[j]=='.')a[i][j]=2;
            else if(temp[j]=='X')a[i][j]=1;
        }
    }//由数字1,2构成的数组二维表已建好 
    cin>>s1>>s2;//起点 
    s1--;s2--;
    //cin>>f1>>f2;//终点 
    cin>>endI>>endJ;
    endI--;endJ--;
    success=0;
    if(visit(s1,s2)==1)cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
}
 
int main()
{
    int t,i;
    cin>>t;//输入测试用例个数
    for(i=0;i<t;i++)
    {
        cin>>n>>m;
        lingJian(n,m);
    }
    return 0;
}

第三题 奥利奥冰淇淋 AC 40

#include<stdio.h>

#include<iostream>

#include<stdlib.h>

using namespace std;

int main()

{

int n, m;

cin >> n >> m;

int w[101],v[101];

for(int i=0;i<n;i++)

{

cin >> w[i];

}

for(int i=0;i<n;i++)

{

cin >> v[i];

}

int res = 0;

int mi = w[0];

for(int i=1;i<n;i++)

{

if(mi > w[i]) mi = w[i];

}

res += mi;

for(int i=0;i<n;i++)

{

w[i] -= mi;

}

while(m>0)

{

for(int i=0;i<n;i++)

{

if(w[i] == 0)

{

m -= v[i];

}

else w[i]--;

}

if(m>=0) ++res;

}

cout << res;

return 0;

}

第二题我总是想改方法耽误了很久加上赶时间就提前交卷了🤣

本来想交卷就发帖,发现还没结束就先发给文件传输助手了。

求各路大神指教


#腾讯##笔试题目##秋招#
全部评论
建议整一下格式emmm
点赞 回复
分享
发布于 2019-08-17 22:14
package demo; import java.io.IOException; class mat{  int num;  int val;  public mat(int num,int val) {   this.num=num;   this.val=val;  }   } public class Test {    public static void find(int[] n1,int[] n2,int[] n3) {   int money=n1[1];   int len=n1[0];   mat[] m=new mat[n1[0]];      for(int i=0;i<len;i++) {    m[i]=new mat(n2[i],n3[i]);   }      int minNum=n2[0];   int index = 0;   while(money>0) {      for(int i=0;i<len;i++) {     if(minNum>m[i].num) {      minNum=m[i].num;      index=i;     }    }    if(money-m[index].val>=0) {     m[index].num++;     money=money-m[index].val;     minNum++;    }else     break;       }   int min=m[0].num;   for(int i=0;i<len;i++) {    if(min>m[i].num) {     min=m[i].num;    }   }   System.out.println(min);     }    public static void main(String[] args) throws IOException {    int[] n1= {3,10};   int[] n2= {2,5,3};   int[] n3= {2,1,3};   find(n1,n2,n3);  } }
点赞 回复
分享
发布于 2019-08-17 22:15
百信银行
校招火热招聘中
官网直投
第二题啥意思,没看懂
点赞 回复
分享
发布于 2019-08-17 22:20
大佬,求你帮我看下第一题。我也是C++。为什么我通过率是0 ,没有内存溢出之类的错误,就是单纯的0通过,是我输入输出写的有问题吗??这题思路很简单的。我本地测试,在线自测都没有问题,都对的。 int main() { long int n,k,res_min=0,tmp=0,min_loc=1; cin >> n >> k;  //K个连续数的和最小 int *ptr_length = new int[n]; for(long int i=0;i<n;i++) { cin >> ptr_length[i]; if(i<k) res_min+=ptr_length[i]; } if(n<=k) cout <<min_loc; for(long int i=1;i<n-k;i++) { for(long int j=0;j<k;j++) { tmp += ptr_length[i+j]; } if(tmp<res_min) { res_min=tmp; min_loc=i+1; } tmp=0; //用完之后tmp=0 } cout << min_loc <<endl; //printf("%ld\n",min_loc); delete []ptr_length; return 0; }
点赞 回复
分享
发布于 2019-08-17 22:46

相关推荐

1 9 评论
分享
牛客网
牛客企业服务