网易2020校招笔试- 测试开发工程师

网易2020校招笔试- 测试开发工程师_第1张图片

网易2020校招笔试- 测试开发工程师_第2张图片 

网易2020校招笔试- 测试开发工程师_第3张图片 

#include 
#include
using namespace std;
 
int main(){
    int t,a,b;
    cin >> t;
    int x;
    for (int i = 0; i < t; i++){
        cin >> x;
        if (x < 10)
            cout << x << endl;
        else{
            a = x % 9;
            b = x / 9;
            vector result;
            int j = 0;
            for (j = 0; j < b; j++) {
                result.push_back(9);
            }
            if (a != 0) {
                result.push_back(a);
            }
            for (int k=result.size()-1; k >= 0; k--)
                cout << result[k];
            cout << endl;
        }
         
    }
}

 

网易2020校招笔试- 测试开发工程师_第4张图片 

 自己的解法(通过率只有20%)

#include 
#include
#include
using namespace std;
 
int main(){
    int t;
    cin >> t;
    long a[3];
    long long sum = 0;
    vector res;
    for (int i = 0; i < t; i++){
        cin >> a[0] >> a[1] >> a[2];
        sort(a, a + 3);
        sum=a[0]+a[1]+a[2];
        if(sum%3==0){
            sum=sum/3;
            if(a[0]+a[1]1)
                sum=tmp-1;
            else
                sum=tmp;
        }
             
        res.push_back(sum);
    }
    for (int i = 0; i < t;i++)
        cout << res[i] << endl;
    return 0;
}

(牛客网别人的解法) 

网易2020校招笔试- 测试开发工程师_第5张图片 

#include 
#include 
using namespace std;
void sort(long list[3]) // 手动冒泡排序
{
    if (list[0]> n;
    for (int i = 0; i < n; i++)
    {
        cin >> l[0] >> l[1] >> l[2];
        sort(l);
        sum = l[0] + l[1] + l[2];
        cout << max((sum + 2) / 3, (l[0] + 1) / 2) << endl;//加2与加1是为上取整
    }
}

 网易2020校招笔试- 测试开发工程师_第6张图片

 网易2020校招笔试- 测试开发工程师_第7张图片

牛客网别人的解法 

网易2020校招笔试- 测试开发工程师_第8张图片 

 

链接:https://www.nowcoder.com/questionTerminal/546b22232fd14997a10a8d2a7a158cbc?f=discussion
来源:牛客网

#include
#include
  
using namespace std;
  
int main() {
    int t;
    cin >> t;
    while(t--) {
        int n;
        cin >> n;
        if (n<=0) {
            cout << 0 << endl;
            continue;
        }
          
        vector a;
        long long tmp;
        while(n--) {
            cin >> tmp;
            a.push_back(tmp);
        }
          
        // 闭区间
        int maxlen = 1;
        long long nowsum = a[0];
        int left=0, right=0;
        while(right+1 < a.size()) {
            if (a[right+1] >= a[right] && a[right+1] >= nowsum) {
                nowsum += a[right+1];
                right ++;
                maxlen = max(maxlen, right-left+1);
                continue;
            }
              
            nowsum -= a[left];
            left ++;
            if (left > right) {
                right = left;
                nowsum = a[left];
            }
        }
          
        cout << maxlen << endl;
    }
}

 

网易2020校招笔试- 测试开发工程师_第9张图片 

网易2020校招笔试- 测试开发工程师_第10张图片

 自己的方法:只能通过30%,但是数组溢出,嵌套太深。

#include 
#include
#include
using namespace std;

int main(){
	int t,n,tmp;
	cin >> t;
	
	vector res;
	for (int i = 0; i < t; i++){
		cin >> n;
		long long sum = 0;
		vector a;
		for (int j = 0; j < n; j++){
			cin >> tmp;
			a.push_back(tmp);
			sum = sum + tmp;
		}
		if (sum % 2 != 0){
			res.push_back("NO");
		}
		else{
			sum = sum / 2;
			int j = 0,k=n-1;
			long long head = 0;
			while (j!=k)
			{
				head = head + a[j];
				if (head == sum && j!=k){
					res.push_back("YES");
					break;
				}
				else if (head < sum && j!=k && k==n-1){
					j++;
				}
				else if (head < sum && j != k && k != n - 1){
					j--;
				}
				else if (j == k && head != sum){
					res.push_back("NO");
					break;
				}
				else if(head>sum && k!=n-1){
					head = head - a[k]-a[j];
					k--;
				}
				else{
					head = head - a[j];
					j--;
					int temp = j;
					j = k;
					k = temp;
				}
			}
		}
	}
	for (int i = 0; i < res.size(); i++)
		cout << res[i] << endl;
	return 0;
}

 

你可能感兴趣的:(编程题)