一支彩色铅笔 2022-05-03 16:57 采纳率: 100%
浏览 488
已结题

为啥洛谷编译不通过 明明我Devc++ 和visual studio 都通过了

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

#include
using namespace std;
#include<math.h>
typedef long long int llt;
llt arr[63000];
llt index = 0;//索引数组的下标
int num1 = 0, num2 = 0;
int f = 0;
llt sum = 0;
//sum用来记录输入了多少个有效字母 ,f来判断是否发生特殊情况
void cal(int number)
{
num1 = 0; num2 = 0;
while (num1 < number && num2 < number)
{

    if (index == sum)
        break;
    if (arr[index] == 'W')
    {
        num1++; index++;
    }
    else if (arr[index] == 'L')
    {
        num2++; index++;
    }
}



if (abs(num1 - num2) >= 2)
    cout << num1 << ":" << num2 << endl;
else
{
    f = 1;

    while (!(abs(num1 - num2) >= 2))
    {
        if (index == sum)
            break;
        if (arr[index] == 'W')
        {
            num1++; index++;
        }
        else if (arr[index] == 'L')
        {
            num2++; index++;
        }
    }
}

if (f)
    cout << num1 << ":" << num2 << endl;
if (index != sum)cal(number);

}

int main()
{

char a;
for (llt i = 0; cin >> a && a != 'E'; i++)
{
    arr[i] = a; sum++;
}
cal(11);
cout << endl;
index = 0, f = 0;
cal(21);
return 0;

}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

3条回答 默认 最新

  • 关注

    变量 f 的值在cal函数开始的时候需要重置为0吧,否则上一次cal运行的时候,如果 f 的值是1,会影响下一次cal函数的执行。
    修改如下:

    void cal(int number)
    {
        f = 0; //修改  在这里把f重置为0
        //其它代码。。。
        num1 = 0; num2 = 0;
        //...
    }
    
    

    还有就是,你的arr数组中,存储的元素的实际大小是-128到127(char的数据范围),没必要用long long 类型,白白的浪费内存空间。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月11日
  • 已采纳回答 5月3日
  • 创建了问题 5月3日

悬赏问题

  • ¥100 业务编程如何选择学习方向和内容?
  • ¥15 wamp3.3.5安装完成后图标正常显示绿色,鼠标左右键点击图标均无反应。求解决方法。
  • ¥15 鼠标点击的这条记录了什么?
  • ¥15 在写pid调速的程序时,电机始终维持最大速度
  • ¥15 【有偿】调用DXGI截图初始化失败,提示0xf 887a0004
  • ¥15 请问如何查看手机root记录?
  • ¥15 商城小程序订单号重复
  • ¥15 学校优化算法sbo和蚁群算法怎么结合
  • ¥21 matlab怎么求时域信号的二阶导数
  • ¥15 判断两个表是否完全相同