当前位置: 首页 > news >正文

贪心算法2(c++)

最大子矩阵
描述
已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1*1)子矩阵。
比如,如下4*4的矩阵

0- 2 -7 0

9 2 -6 2
-4 1 -4 1

-1 8 0-2

的最大子矩阵是
9 2
-4 1
-18
这个子矩阵的大小是15。

输入输入是一个N*N的矩阵。输入的第一行给出N(0<N<=100)。再后面的若干行中,依次(首先从左到右给出第一行的N个整数,再从左到右给出第二行的N个整数…)给出矩阵中的N2个整数,整数之间由空白字符分隔(空格或者空行)。已知矩阵中整数的范围都在[-127,127]。
输出
输出最大子矩阵的大小。
样例输入
4

0 -2 -7 0

9 2 -6 2

-4 1 -4 1

-1 8 0 -2
样例输出
15

#include <iostream>
using namespace std;
int main()
{int n;cin>>n;int a[110][110] = {0};int b[110][110] = {0};for(int i = 1;i<=n;i++){for(int j = 1;j<=n;j++){cin>>a[i][j];if(i==1){b[i][j] = b[i][j-1]+a[i][j];}else{b[i][j] = b[i-1][j]+a[i][j]+b[i][j-1]-b[i-1][j-1];}}}int cnt = 0;int ma = -99999;for(int i1 = 1;i1<=n-1;i1++){for(int j1 = 1;j1<=n-1;j1++){for(int i2 = i1+1;i2<=n;i2++){for(int j2 = j1+1;j2<=n;j2++){if(i1==1&&j1==1){cnt = b[i2][j2];}else if(i1!=1&&j1==1){cnt = b[i2][j2]-b[i1-1][j2];}else if(i1==1&&j1!=1){cnt = b[i2][j2]-b[i2][j1-1];}else if(i1!=1&&j1!=1){cnt = b[i2][j2]-b[i2][j1-1]-b[i2][j1-1]+b[i1-1][j1-1];}ma = max(cnt,ma);}}}}cout<<ma;return 0;
}

均分纸牌
题目描述
有n堆纸牌(2<n≤200),排成一行,编号分别为1,2....n。已知每堆纸牌有一定的张数,且张数之和均为n的倍数。移动各堆中的任意张纸牌,使每堆的数量达到相同,且移动次数最少。
移动规则:每次可以移动任意的张数,第1堆可以移向第2堆第2堆可以移向第1堆或第3堆,。第n堆只可以移向第n-1堆。

例如,当n=4时:

堆号1 2 3 4

张数3 5 4 8
移动的方法有许多种,其中的一种方案:

① 第2堆向第1堆移动2张,成为:5 3 4 8

②第4堆向第3堆移动3张,成为:5 3 7 5

③第3堆向第2堆移动2张,成为:5 5 5 5

经过三次移动,每堆都成为5张。
输入
第一行一个整数n。
第二行n个整数,用空格分隔。
输出
1个整数(表示最少移动次数)

样例

输入复制
4
3 5 4 8
输出复制
2

#include <iostream>
using namespace std;
int main()
{int n;cin>>n;int a[210] = {0};int sum = 0;for(int i = 0;i<n;i++){cin>>a[i];sum = sum+a[i];}sum = sum/n;int cnt = 0;for(int i = 0;i<n;i++){if(a[i]<sum){a[i+1] = a[i+1]-(sum-a[i]);a[i] = sum;cnt++;}else if(a[i]>sum){a[i+1] = a[i+1]+a[i]-sum;a[i] = sum;cnt++;}}cout<<cnt;return 0;
}

http://www.lryc.cn/news/352197.html

相关文章:

  • Bugku Crypto 部分题目简单题解(四)
  • 软考备考三
  • Fortran: select type
  • QEMU启动Linux内核
  • Golang | Leetcode Golang题解之第109题有序链表转换二叉搜索树
  • Qt快速入门到熟练(电子相册项目(一))
  • 机械臂与Realsense D435 相机的手眼标定ROS包
  • ubuntu使用记录——如何使用wireshark网络抓包工具进行检测速腾激光雷达的ip和端口号
  • C#学习指南:重要内容与实用技巧
  • display(a,b)什么意思
  • SpringBoot3整合阿里云短信服务-1(配置阿里云短信服务)
  • 基于HAL库控制LED流水灯
  • 利用kubeadm安装k8s集群 以及跟harbor私有仓库下载镜像
  • 明天(周六)下午!武汉Linux爱好者线下沙龙,我们在华中科技大学等你!
  • MySQL主从复制(五):读写分离
  • 阿里巴巴 EasyExcel 真正的高效与通用导入(亿级数据秒级导入)
  • 32.5k star!!替换 postman?【送源码】
  • 课时135:awk实践_逻辑控制_综合实践
  • c++ 读取MNIST数据集实现softmax回归
  • JS-04何为继承以及实现方式
  • 6款网站登录页(附带源码)
  • spring boot打的包直接运行
  • 移除元素-力扣
  • 代码随想录算法训练营第三天| 203.移除链表元素、 707.设计链表、 206.反转链表
  • 【题解】AB33 相差不超过k的最多数(排序 + 滑动窗口)
  • LSPatch免root手机模块应用
  • 深入解析kube-scheduler的算法自定义插件
  • java原型模式 (Prototype Pattern) 介绍
  • LLama3 | 一. 本地 Web Demo 部署
  • MariaDB 给指定列值自动加密(持久数据加触发器)