CCF二十四点巧解(100)

博客探讨了如何高效解决CCF二十四点问题,通过特殊处理乘除法,将数组拆分为更易处理的部分,避免了括号和顺序的问题。通过一次遍历,实现了低时间复杂度的解决方案,强调了数据类型选择对结果的影响,特别是整数除法的需求。

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

CCF二十四点巧解(100)c/c++

在这里插入图片描述
程序思想:1+3x2/8 检测乘号和除号,因为乘除肯定是优先计算,可以将数组拆分成1+0+6/8;这样对顺序检测也加强了方便
也就是将a[i+1]就变为a[i]*a[i+1],a[i]变成0,b[i]变成’+’,当b[i-1]为负号时,需要注意一下,例如1-3x2/8拆分成
1-(0+6)/8 去括号 这就当做1-0-6/8,所以b[i]=’-'这样就解决了问题
特别是只需要一次遍历就可以把乘法和除法检测出来,时间复杂度极小,效率很高
注意事项,因为题目要求是两个整数相除等于整数,
开始是将所有数变成浮点数来计算的,导致只有70分,后面将所有数据改为整型数组就100,又是细节问题

#include<stdio.h>
#include<malloc.h>
int main(){
   
	int n;
	scanf("%d",&n);//输入的次数 
	int*c=(int*)calloc(n,sizeof(int));//此数组用来记录yes或者No,  1表示yes,0表示No 
	int m=n;
	while(n>0){
   
		int a[4]={
   0}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值