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

xtu oj 六边形

六边形
题目描述
一个六边形组成的“花朵”图案,编号如图所示。

其中
2∼7构成内圈,8∼19构成外圈。 你可以按顺时钟或者逆时针方向,循环移动外圈或者内圈六边形里数字,但是不能在内外圈之间移动里面的数字。

任取一个六边形和其周围围绕的六个六边形,可以构成的一个“小花”图形,我们想知道所有这样的“小花”中的数字累加和最小是多少?

输入格式
第一行输入一个整数(1≤T≤1000),表示样例的个数。以后每个样例占1行,为19个非负整数,每个数的值不超过1000,为对应编号格子中的数字。

输出格式
每行输出一个样例的结果,为一个整数。

样例输入
1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
样例输出
28
样例解释
无论怎么旋转内外圈,中央的那个子六边形的累计和都是
1+2+3+4+5+6+7=28,这个是最小的。

解题思路:无论怎样旋转,构成六边形必有最内圈a[1]那个数,只要考虑两种情况即可。

1.最内圈+第二圈 即a[1]+a[2]+...+a[7]

2、最内圈a[1]+第二圈连续三个最小数+第三圈连续三个最小数

两种情况比较即可得出答案

AC代码

#include<stdio.h>
int main(){int T;scanf("%d",&T);while(T--){int a[22]={};int i,j;for(i=1;i<=19;i++){scanf("%d",&a[i]);}int min=0;//内圈 for(i=1;i<=7;i++){min+=a[i];}int min1=a[2]+a[3]+a[4],min2=a[8]+a[9]+a[10];int sum1,sum2;for(i=2;i<=7;i++){if(i<=5)sum1=a[i]+a[i+1]+a[i+2];else if(i==6)sum1=a[6]+a[7]+a[2];else sum1=a[7]+a[2]+a[3];if(sum1<=min1)min1=sum1;}for(i=8;i<=19;i++){if(i<=17)sum2=a[i]+a[i+1]+a[i+2];else if(i==18)sum2=a[18]+a[19]+a[8];else sum2=a[19]+a[8]+a[9];if(sum2<=min2)min2=sum2;}int sum=a[1]+min1+min2;if(sum<=min)min=sum;printf("%d\n",min);}
} 


http://www.mrgr.cn/news/39958.html

相关文章:

  • N诺计算机考研-错题(DS)
  • 银河麒麟系统镜像安装包下载
  • Node.JS 版本管理工具 Fnm 安装及配置(Windows)
  • 国内ChatGPT镜像网站整理汇总【OpenAI o1/GPT 4o】-2024/10月最新
  • MultipartFile 接口
  • 从一到无穷大 #36 Lindorm 宽表:东西互联,南北互联,AI一体
  • 优选驾考系统小程序的设计
  • 香港科技大学新作:速度场如何在复杂城市场景规划中大显身手
  • MySQL那些事(InnoDB架构和存储结构)
  • 怎样才能设计出全面且详细的测试要点?
  • Ollama安装部署CodeGeeX4 - ALL - 9B
  • AI写作赋能数据采集,开启无限可能性
  • Linux系统应用(6)——make与makefile
  • Electrodoc 5.2 专业电工工具集合,支持多种计算器和资料查询!
  • 平安养老险深圳分公司积极开展“金融教育宣传月”活动,展现金融为民新风尚
  • JWT 令牌生成报错
  • 【spring中event】事件简单使用
  • ubutun nginx 安装和解决端口占用问题
  • Artec Leo 3D扫描助力Illumaesthetic公司加速汽车定制
  • 集师专属知识付费小程序搭建 心理咨询小程序搭建