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

Simple Fun #352: Reagent Formula——C语言提高题

一、原题

链接:Training on Simple Fun #352: Reagent Formula | Codewars

Now we will confect a reagent. There are eight materials to choose from, numbered 1,2,..., 8 respectively.

We know the rules of confect:

You are given a integer array formula. Array contains only digits 1-8 that represents material 1-8. Your task is to determine if the formula is valid. Returns true if it's valid, false otherwise.

二、解题

1、分析

【数学的与或非】

        等价结果在右侧

material1 and material2 cannot be selected at the same time

1和2同时不选;只选1;只选2;
material3 and material4 cannot be selected at the same time3和4同时不选;只选3;只选4;
material5 and material6 must be selected at the same time5和6同时选;5和6都不选
material7 or  material8 must be selected(at least one, or both)7和8同时不选;只选7;只选8;

         formula[length]五重复值,可进一步化为:

1和2同时不选;只选1;只选2;(a[1]!=a[2]|| (a[1]==0 && a[2]==0))
3和4同时不选;只选3;只选4;(a[3]!=a[4] || (a[3]==0 && a[4]==0))
5和6同时选;5和6都不选(a[5]==a[6])
7和8同时不选;只选7;只选8;(a[7]>0 || a[8]>0)

2、思路

1)创建数组a[9]={0}

2)逐步读取formula[length]中的值存入item,将a[item]++;

3)按照分析的结果进行后续处理

 if(a[7]>0 || a[8]>0){if(a[5]==a[6]){//主要是无重复项if(a[3]!=a[4] || (a[3]==0 && a[4]==0)){if(a[1]!=a[2]|| (a[1]==0 && a[2]==0)){return true;} else return false;}else return false;}else return false;}else return false;

三、Myway

#include <stdbool.h>
#include <stddef.h>
#include<stdio.h>
bool is_valid(size_t length, const unsigned formula[length]) {//  <----  hajime!int a[9]={0},item=-1;for(size_t i=0;i<length;i++){//item=formula[i];// 非  formula[length]a[item]+=1;}if(a[7]>0 || a[8]>0){if(a[5]==a[6]){//主要是无重复项if(a[3]!=a[4] || (a[3]==0 && a[4]==0)){if(a[1]!=a[2]|| (a[1]==0 && a[2]==0)){return true;} else return false;}else return false;}else return false;}else return false;}

        复制时需要观察变量情况,如第11行,我直接将formula[length]复制来用,未将length换为i,导致发生错误。

        数学思维在处理问题上,很有帮助。

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【JUnit单元测试框架】
  • 如何在VSCODE中查看西门子PLC的SCL程序?
  • 设置Virtualbox虚拟机共享文件夹
  • Midjourney提示词——黑神话悟空角色生成提示词!
  • C语言 strlen求字符串长度
  • Android架构组件:MVVM模式的实战应用于数据绑定技巧
  • SpringCloud-02 Consul服务注册与发现
  • OPenCV结构分析与形状描述符(2)计算轮廓周长的函数arcLength()的使用
  • 黑马点评2——商户查询缓存(P37店铺类型查询业务添加缓存练习题答案)redis缓存、更新、穿透、雪崩、击穿、工具封装
  • 搜维尔科技:使用Geomagic Touch X 对机械臂进行远程遥操作
  • 22. c语言怎么打印2进制、8进制、10进制、16进制数?
  • 基于Python的机器学习系列(25):使用PyTorch处理数据集
  • Unity版本升级2022 Gradle 升级7.x版本调整
  • JVM面试(五)垃圾回收机制和算法
  • opencv之阈值处理
  • 深入了解以太坊
  • Effective Java 笔记(一)
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • JavaScript 基础知识 - 入门篇(一)
  • JS+CSS实现数字滚动
  • Js基础知识(一) - 变量
  • LeetCode算法系列_0891_子序列宽度之和
  • PHP那些事儿
  • quasar-framework cnodejs社区
  • react-native 安卓真机环境搭建
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • vue自定义指令实现v-tap插件
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 数据可视化之 Sankey 桑基图的实现
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • AI算硅基生命吗,为什么?
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​比特币大跌的 2 个原因
  • # 数据结构
  • #控制台大学课堂点名问题_课堂随机点名
  • #数据结构 笔记三
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (02)Hive SQL编译成MapReduce任务的过程
  • (1)STL算法之遍历容器
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (二)c52学习之旅-简单了解单片机
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (转)德国人的记事本
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .dwp和.webpart的区别
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题