二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1 每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。

博客围绕二货小易的W*H网格盒子展开,每个格子至多放一块蛋糕,且任意两块蛋糕欧几里得距离不能等于2。给出输入为网格长宽,输出为最多可放蛋糕数的要求,并给出示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1
每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。
对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:
( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根
小易想知道最多可以放多少块蛋糕在网格盒子里。
输入描述:
每组数组包含网格长宽W,H,用空格分割.(1 ≤ W、H ≤ 1000)
输出描述:
输出一个最多可以放的蛋糕数
示例1
输入

3 2
输出
4

 


public class Test1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
            int h = sc.nextInt();
            int w = sc.nextInt();
            int count = 0;
            for(int i = 0;i<h;i++){
                int j =0;
                if(i/2%2 !=0){
                    j=2;
                }
                for(;j<w;j+=4){
                    if(j+1<w){
                        count +=2;
                    }else{
                        count+=1;
                    }
                }
            }
            System.out.println(count);

    }
}

 

1.求解涂棋盘问题。 小易有一块n*n的棋盘,棋盘的每一个格子都为黑色或者白色,小易现在要用他喜欢的红色去涂棋盘.小易会找出棋盘的某一中,拥有相同颜色的最大区城去涂画,帮助小易算算他会图多少个棋格。 输入描述:输入数据包括1+1行,第一行为一个整数n(1<=n<=50),即棋盘的大小;接下来的n行每行 一个字符串表示第{行棋盘的颇色,'W'表示白色,'B'表示照色. 输出描述:输出小易会涂画的区域大小 输入样例: 3 BWW BBB BWB 样例输出: 3 #include <iostream> #include <vector> #include <algorithm> using namespace std; // 定义方向数组,用于在棋盘上移动 int dx[] = {-1, 1, 0, 0}; int dy[] = {0, 0, -1, 1}; // 深度优先搜索函数,用于标记连通区域 void dfs(vector<vector<char>>& board, int x, int y, char color, vector<vector<bool>>& visited) { int n = board.size(); int m = board[0].size(); visited[x][y] = true; for (int i = 0; i < 4; ++i) { int nx = x + dx[i]; int ny = y + dy[i]; if (nx >= 0 && nx < n && ny >= 0 && ny < m && !visited[nx][ny] && board[nx][ny] == color) { dfs(board, nx, ny, color, visited); } } } int main() { int n; cin >> n; vector<vector<char>> board(n, vector<char>(n)); vector<vector<bool>> visited(n, vector<bool>(n, false)); int maxArea = 0; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { cin >> board[i][j]; } } // 遍历棋盘,对每个未访问的格子进行DFS for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (!visited[i][j]) { int area = 0; dfs(board, i, j, board[i][j], visited); for (int x = 0; x < n; ++x) { for (int y = 0; y < n; ++y) { if (visited[x][y]) { area++; visited[x][y] = false; // 重置visited数组 } } } maxArea = max(maxArea, area); } } } cout << maxArea << endl; return 0; } 实验代码能够完成吗?
最新发布
04-01
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值