8.19华为笔试 第一题为什么一直卡70%

#include<iostream>
#include<vector>
#include<map>
using namespace std;


bool Isrightnum(int num)
{
num = num % 100;

int a = num % 10;
int b = num / 10;


if (a == 7 && b % 2 == 1) return true;
else return false;
}

void fillnum(vector<vector<int>> &matrix, int &start_x, int &start_y, int &end_x, int &end_y ,int &cnt , vector<vector<int>> &ans)
{

for (int j = start_y; j <= end_y; j++)
{

matrix[start_x][j] = cnt;
if (Isrightnum(cnt))
{
ans.push_back({ start_x, j });
}
cnt++;
}//输出matrix[start_x][start_y] ---- matrix[start_x][end_y]

for (int i = start_x + 1; i < end_x; i++)
{
matrix[i][end_y] = cnt;
if (Isrightnum(cnt))
{
ans.push_back({ i, end_y });
}
cnt++;
}//输出matrix[start_x+1][end_y] ---- matrix[end_x-1][end_y]
for (int j = end_y; j >= start_y; j--)
{
matrix[end_x][j] = cnt;
if (Isrightnum(cnt))
{
ans.push_back({ end_x, j });
}
cnt++;
}//输出matrix[m-1][n-1] ---- matrix[m-1][start_y]
for (int i = end_x-1; i >= start_x + 1; i--)
{
matrix[i][start_y] = cnt;
if (Isrightnum(cnt))
{
ans.push_back({ i,start_y });
}
cnt++;
}//输出matrix[m-2][start_y] ---- matrix[start_x+1][start_y]
}


int main()
{
vector<vector<int>> ans;
int m;
cin >> m;
int n;
cin >> n;

if (m >= 10 && m <= 1000 && n >= 10 && m <= 1000)
{
vector<vector<int>> matrix(m, vector<int>(n, 0));

int start_x = 0;
int start_y = 0;
int end_x = m - 1;
int end_y = n - 1;
int cnt = 1;
int a = 0;



while (end_x >= 0 && end_y >= 0 && start_x <= m && start_y <= n)
{
fillnum(matrix, start_x, start_y, end_x, end_y, cnt, ans);

start_x++;
start_y++;
end_x--;
end_y--;
}
cout << "[";
for (int i = 0; i < ans.size(); i++)
{
if (i == ans.size() - 1)
{
cout << "[" << ans[i][0] << "," << ans[i][1] << "]";
}
else
{
cout << "[" << ans[i][0] << "," << ans[i][1] << "]" << ",";
}
}
cout << "]";

}

else
{
return 0;
}



system("pause");
return 0;
}
#华为##笔试题目#
全部评论
我一直卡60,不知道哪里有问题
点赞
送花
回复 分享
发布于 2020-08-19 21:09
应该是异常输入,返回空数组的问题我们没写对
点赞
送花
回复 分享
发布于 2020-08-19 21:09
秋招专场
校招火热招聘中
官网直投
异常输入范围要输出空数组的老哥,不是直接return 0
点赞
送花
回复 分享
发布于 2020-08-19 21:10
判断10和1000边界,直接100
点赞
送花
回复 分享
发布于 2020-08-19 21:11
发一下题目
点赞
送花
回复 分享
发布于 2020-08-19 21:11
else 异常应该是得 cout<<"[]"<<endl;
点赞
送花
回复 分享
发布于 2020-08-19 21:11
我都傻了,异常要自己输出"[]"。。
点赞
送花
回复 分享
发布于 2020-08-19 21:19
题目说的输入是在10~1000之间,服了
点赞
送花
回复 分享
发布于 2020-08-19 21:20

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务