Description
小花梨现在有一个n层三角形图(参考下图),第 i 层有2i − 1个边长为1的等边三角形。
每个交点处存在一个字符,总共有n + 1层字符,第 i 层有 i 个字符。
小花梨用等边三角形三个顶点上的字符来表示这个三角形,两个等边三角形如果它们的三个
顶点字符相同(不区分顺序)则视为同一类等边三角形。小花梨想知道总共存在多少种不同类
别的等边三角形。
Input
第一行为正整数n,表示三角形层数(1 ≤ n ≤ 100)。
接下来n + 1行,第 i 行输入 i 个字符,表示第 i 层的字符。(字符只包含小写字母"a − z")
Output
输出一个整数表示存在多少种不同类别的三角形

Note
样例一:只存在顶点为(a,b,c)的三角形
样例二:存在顶点为(a,b,b) 、 (a,c,c) 、 (a,b,c)的3类不同的三角形
样例三:只存在顶点为(a,a,a)的三角形

分析

题目给出的范围比较小,为n<=100,直接找等边三角形就可以,那么怎么找呢?我的方法是这样的:先找正着的三角形,再找倒着的三角形。例如样例二,(a,b,b)就是正着的三角形,(b,b,a)就是倒着的三角形。在查找时要注意,可能有多个三角形拼凑出来的大三角形也满足条件。找到每个三角形以后,用map来记录相应的三个顶点的组合是否出现过,因为不区分顺序,所以每次都要排一下序。

代码

#include<iostream>
#include<cstdio>
#include<string.h>
#include<algorithm>
#include<map>
#include<vector>
using namespace std;
int main()
{int n,ans=0;char tu[105][105];scanf("%d",&n);for(int i=0;i<=n;i++){scanf("%s",tu[i]);}map<string,int> M;for(int i=0;i<=n;i++){for(int j=0;j<=i;j++){int d=1;while(1){if(i+d<=n)//不能超过n层 {string t="";t+=tu[i][j];t+=tu[i+d][j];t+=tu[i+d][j+d];sort(t.begin(),t.end());if(M[t]==0){M[t]=1;ans++;}}elsebreak;d++;}}}for(int i=n;i>=0;i--){for(int j=0;j<=i;j++){int d=1;while(1){if(i-d>=0&&j-d>=0&&j<=i-d)//注意与查找正着的三角形判断条件不一样 {string t="";t+=tu[i][j];t+=tu[i-d][j];t+=tu[i-d][j-d];sort(t.begin(),t.end());if(M[t]==0){M[t]=1;ans++;}}elsebreak;d++;}}}cout<<ans<<endl;return 0;
}

小花梨的三角形--美登杯相关推荐

  1. “美登杯”上海市高校大学生程序设计邀请赛 **D. 小花梨的取石子游戏**

    "美登杯"上海市高校大学生程序设计邀请赛 (华东理工大学) D. 小花梨的取石子游戏 Description 小花梨有?堆石子,第?堆石子数量为??,?堆石子顺时针编号为1 − ? ...

  2. “美登杯”上海市高校大学生程序设计邀请赛 (华东理工大学)

    Problem A 小花梨的字符串 https://acm.ecnu.edu.cn/contest/173/problem/A/ 题意:对区间子字符串排列,使得满足条件,求排列最长. 题解: C++版 ...

  3. B. 小花梨的三角形

    B. 小花梨的三角形 这个题目我真的是感触良多啊,怎么说呢,在一个上三角矩阵里面找出所有三角形的问题,正的三角形可以从第一个顶点开始遍历,设一个方程(i,j)(i+k,j),(i+k,j+k)来表示三 ...

  4. “美登杯”上海市高校大学生程序设计赛B. 小花梨的三角形(模拟,实现)

    题目链接:https://acm.ecnu.edu.cn/contest/173/problem/B/#report9 Problem B B . 小 花梨 的 三角形 时间限制:1000ms 空间限 ...

  5. 美登杯-小花梨的三角形(枚举)

    Problem Description: 小花梨现在有一个?层三角形图(参考下图),第?层有2? − 1个边长为1的等边三角形. 每个交点处存在一个字符,总共有? + 1层字符,第?层有?个字符. 小 ...

  6. “美登杯”上海市高校大学生程序设计 C. 小花梨判连通 (并查集+map)

    Problem C C . 小 花梨 判连通 时间限制:2000ms 空间限制:512MB Description 小花梨给出?个点,让?位同学对这?个点任意添加无向边,构成?张图.小花梨想知道对于 ...

  7. “美登杯”上海市高校大学生程序设计邀请赛 (华东理工大学)E. 小花梨的数组

    题目链接:https://acm.ecnu.edu.cn/contest/173/problem/E/ 题意:Description 小花梨得到了一个长度为?的数组?,现在要对它进行三种操作: ⚫ 1 ...

  8. 小花梨判连通(DFS或BFS或并查集+vector+map)——“美登杯”上海市高校大学生程序设计邀请赛 (华东理工大学)

    (https://acm.ecnu.edu.cn/contest/173/problem/C/) 题目大意: 小花梨给出?个点,让?位同学对这?个点任意添加无向边,构成?张图.小花梨想知道对于每个点? ...

  9. “美登杯”上海市高校大学生程序设计邀请赛(华东理工大学) 小花梨的取石子游戏(博弈)

    Description 小花梨有?堆石子,第?堆石子数量为??,?堆石子顺时针编号为1 − ?(如图) . 游戏将进行?轮,每轮游戏单独进行,互不干扰,每轮初始时第?堆石子数目为??. 第?轮从编号为 ...

最新文章

  1. Tab标签页接口---使用Intent对象
  2. 【产品动态】一文详细解读智能数据构建产品Dataphin的“规划”功能
  3. Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试(自由风格)
  4. 精通 TensorFlow 1.x·翻译完成
  5. alpine linux安装桌面,Alpine linux硬盘安装
  6. Silverlight 图片路径问题
  7. [luogu1486][NOI2004]郁闷的出纳员
  8. 虚拟机CentOS系统没有UNIX2dos或dos2UNIX命令的解决方案(参考各路大佬后的总结)
  9. 曼联携手HCL开发“数字体验平台”,期待大获全胜
  10. 线性代数 行列式 矩阵 教材笔记
  11. 「沐神」工作五年的沉思录 「这就是李沐」开挂人生的深度解读
  12. Android项目开发之--------地铁时光机(二,Floyd算法筛选最短路径及输出)
  13. appdata是什么文件夹,
  14. 微信小程序滑动验证拼图(有效果图)
  15. 博弈论基础知识: 巴什博奕+斐波那契博弈+威佐夫博奕+尼姆博弈(及Staircase)
  16. 【百人计划】图形3.5 纹理压缩的格式
  17. 在linux系统下忘记了root密码,在linux系统下,忘记了root密码,可以到()模式下修改找回root密码()...
  18. 四轴飞行器资料分享,几个G ,66个文件,如果链接失效请私聊我
  19. 黑苹果一些奇怪的事情
  20. 算法设计——质数的乘积

热门文章

  1. windows10桌面计算机图标删除吗,win10电脑桌面图标删除不了怎么办
  2. YII2 路由问题-摘自yii2官方文档
  3. VMware Workstation 全屏的设置方法
  4. BZOJ2277 [Poi2011]Strongbox 【数论】
  5. 字符表单验证与正则表单验证
  6. 安装MySQL报错:[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defau
  7. 1.3常规信息系统集成技术
  8. Nutch 2.0 终于来了
  9. 一别两宽,各生欢喜。
  10. 智慧厕所厕位引导系统怎么建?中期科技zontree智慧公厕一探究竟