嗨,任何人都可以请帮我解决这个问题。提交此代码时出现分段错误。这是代码

时间:2021-05-16 17:12:50

标签: segmentation-fault

#include<bits/stdc++.h>
using namespace std;


class Node{
public:
    char data;
    Node*next;
};

void push(Node**head_ref, char data){
    Node*new_node = new Node();
    new_node->data = data;
    new_node->next = NULL;
    Node*ptr;
    if((*head_ref) == NULL)
    *head_ref = new_node;
    else{
        ptr = *head_ref;
        while(ptr->next != NULL)
            ptr = ptr->next;
        ptr->next = new_node;
    }
}

Node*findConnection(Node*head){
    Node*curr = head;
    while(curr != NULL){
        if((curr->data == '0') && (curr->next->data == '1'))
        return curr->next;
        else
        curr = curr->next;
    }

}
void printList(Node*head){
    while(head != NULL){
        cout << head->data << " ";
        head = head->next;
    }
}
int main()
{
    string str;
    int t, a, b;

    cin >> t;
    for(int i = 0; i < t; i++)
    {
       
        cin >> a >> b;
       
        cin >> str;
        int y = 0;
        Node*head = NULL;
        int n = str.length();
        for(int i = 0; i < n; i++){
            push(&head, str[i]);
        }
        Node*temp = findConnection(head);

        while(temp->next != NULL){
            int  x = 0;
            while(temp->next->data != '1'){
                x = x+1;
                temp = temp->next;
            }
            if(x != 0)
            {
                int res = (x * b);
                if(res < a)
                y = y + b;
                else
                y = y + a;
            }
            temp = temp->next;
        }
        
        
       
        cout << (y + a) << endl;
     
    }
}

问题来了

圆形多米诺骨牌

多米诺骨牌是一系列使用游戏瓷砖玩的瓷砖游戏,通常称为多米诺骨牌。每个多米诺骨牌都是一块矩形瓷砖,一条线将其面分成两个方形端。在多米诺骨牌排列中,每块瓷砖都垂直放置,一排排在另一块后面,这样如果推动一块瓷砖,它们后面对齐的瓷砖也会随之而来。在游戏中,敲击瓷砖会导致整个布置掉落。你决定玩这个游戏,这样你的排列是圆形的,一个在另一个后面,即最后一个瓷砖后面是第一个瓷砖。

布置好圆形多米诺骨牌后,您只需轻按一下即可放下所有东西。不幸的是,Mac(你邻居讨厌的孩子)跑向你的安排并摧毁了它。一些以前站立的多米诺牌现在不见了。现在,如果您点击其中一个瓷砖,则没有必要所有瓷砖都会一个接一个地落成一个完整的圆圈,因为有些瓷砖丢失了。你固执,你想放弃所有剩余的瓷砖。 Mac 将不得不为此付出代价。你在他面前做了一个不可避免的交易:

Mac 将不得不支付卢比。点击单个磁贴。 Mac将不得不支付卢比。将瓷砖放在缺少的地方(空白处)。 帮助 Mac 制定一种方式,让 Mac 支付最低费用并设法丢弃剩余的瓷砖。 给定一个字符串,标记为“1”,其中有瓷砖,而“0”则表示没有瓷砖。帮他省钱。

输入格式

第一行包含一个正整数(1 <=t<= 10^5)——测试用例的数量 测试用例如下: 和空间分开 1 和 0 的字符串

约束

1<=t<=10^5

0<=a,b<=1000

所有测试用例的字符串长度总和不超过 10^5 .

输出格式

一个整数,它是每个测试用例的最低成本。

样本输入 0

3

5 4

1111000101011

1 1

1010101

2 8

1111000101011

样本输出 0

13

3

6

它适用于示例案例。但是当我针对测试用例进行测试时显示分段错误 提前致谢

0 个答案:

没有答案