首页 > 8.19华为笔试 第一题为什么一直卡70%
头像
行走的offer
编辑于 2020-08-19 21:23
+ 关注

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;
}

全部评论

(8) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐