到底什么是“摆烂”?简单解释下

一、快速了解

“摆烂”一般是指放任烂的结果发生,或者是故意造成烂的结果。和“破罐子破摔”含义类似。

图片

二、扩展知识

1. 典型场景

“摆烂”常见于合作对抗类游戏中,有些人发现队友不会玩或者这把胜利希望很小的时候,就会故意乱玩,这种一般就称之为摆烂。

当事人常会说“开摆”来形容自己已经放弃抵抗。

用到生活中,本来想好好打扫下屋子,结果遇到“屋漏偏逢连夜雨”等各种事情一团糟的情形,索性放弃改变,就属于摆烂;

用到工作上,本来想好好努力争取晋升,结果听小道消息说晋升名额已经内定好了,索性每天摸鱼混日子,也属于摆烂的一种。

2. 摆烂和躺平的区别

躺平结合不同的语境可以是贬义、中性甚至褒义,比如环境太恶劣而放弃内卷,选择躺平,这个结果可好可坏。

而摆烂一般就是贬义,因为是预见到了坏的结果而不去改变放任其发生。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: KMP算法是一种字符串匹配算法,用于在一个文本串中查找一个模式串的出现位置。它通过利用模式串的部分匹配信息,可以大大减少匹配的次数,提高匹配效率。 下面是一个使用C语言实现KMP算法的例子: ``` #include <stdio.h> #include <string.h> void getNext(char *pattern, int *next) { int len = strlen(pattern); next[0] = -1; int k = -1; int j = 0; while (j < len - 1) { if (k == -1 || pattern[k] == pattern[j]) { ++k; ++j; next[j] = k; } else { k = next[k]; } } } int KMP(char *text, char *pattern) { int len1 = strlen(text); int len2 = strlen(pattern); int *next = (int *)malloc(sizeof(int) * len2); getNext(pattern, next); int i = 0; int j = 0; while (i < len1 && j < len2) { if (j == -1 || text[i] == pattern[j]) { ++i; ++j; } else { j = next[j]; } } if (j == len2) { return i - len2; } else { return -1; } } int main() { char text[] = "ababababca"; char pattern[] = "abababca"; int index = KMP(text, pattern); printf("index: %d\n", index); return 0; } ``` 在这个例子中,函数getNext用于预处理模式串的next数组,next数组表示当前位置之前的子串中,有多少个字符和当前位置的子串匹配。这个信息可以用来跳过不必要的匹配,从而提高匹配 ### 回答2: KMP算法,即Knuth-Morris-Pratt算法,是一种字符串匹配算法,其主要目的是在一个主串中找到一个模式串的出现位置。KMP算法通过对模式串的前缀和后缀进行匹配来跳过一些不必要的比较,从而提高匹配效率。 具体实现KMP算法的步骤如下: 1. 预处理,构建一个部分匹配表,用于记录模式串中每个子串的最长前缀和后缀的长度。部分匹配表可以帮助我们确定在不匹配时模式串需要向右移动的距离。 2. 在主串中进行匹配,通过比较主串和模式串的字符来进行匹配。如果匹配成功,模式串继续向右移动,同时匹配成功的数量加1;如果匹配失败,则利用部分匹配表计算模式串需要向右移动的距离,并进行移动。 以下是用C语言实现KMP算法的示例代码: ``` #include<stdio.h> #include<string.h> // 构建部分匹配表 void buildPartialMatchTable(const char *pattern, int *table) { int len = strlen(pattern); int i = 0, j = -1; table[0] = -1; while (i < len) { if (j == -1 || pattern[i] == pattern[j]) { i++; j++; table[i] = j; } else { j = table[j]; } } } // KMP匹配 int kmp(const char *text, const char *pattern) { int textLen = strlen(text); int patternLen = strlen(pattern); int i = 0, j = 0; int *table = new int[patternLen]; buildPartialMatchTable(pattern, table); while (i < textLen) { if (j == -1 || text[i] == pattern[j]) { i++; j++; } else { j = table[j]; } if (j == patternLen) { delete[] table; return i - j; } } delete[] table; return -1; } int main() { const char *text = "AABACAABABACAA"; const char *pattern = "ABAB"; int index = kmp(text, pattern); if (index != -1) { printf("Pattern found at index %d\n", index); } else { printf("Pattern not found\n"); } return 0; } ``` 以上是KMP算法的简单介绍和用C语言实现的示例代码。通过构建部分匹配表和利用该表进行匹配,KMP算法可以在一个主串中高效地查找模式串的出现位置。 ### 回答3: KMP算法(Knuth-Morris-Pratt算法)是一种字符串匹配算法,用于在一个主字符串中查找一个给定的模式字符串。与朴素的字符串匹配算法相比,KMP算法具有更高的效率。 该算法的核心思想是利用已匹配的部分信息来避免不必要的比较。首先,通过预处理模式字符串,生成一个部分匹配表(partial match table),记录了模式字符串中前缀与后缀的最长公共部分长度。然后,在匹配过程中,通过对模式字符串和主字符串进行逐个字符的比较,当出现不匹配的情况时,根据部分匹配表中的信息,调整模式字符串的对齐位置,从而实现跳跃式的匹配。 以下是利用C语言来实现KMP算法的示例代码: ```c #include <stdio.h> #include <string.h> void partialMatchTable(char* pattern, int* table) { int len = strlen(pattern); table[0] = 0; int i = 1; int j = 0; while (i < len) { if (pattern[i] == pattern[j]) { j++; table[i] = j; i++; } else { if (j != 0) { j = table[j-1]; } else { table[i] = 0; i++; } } } } void KMP(char* str, char* pattern) { int lenStr = strlen(str); int lenPattern = strlen(pattern); int* table = (int*)malloc(lenPattern * sizeof(int)); partialMatchTable(pattern, table); int i = 0; int j = 0; while (i < lenStr) { if (str[i] == pattern[j]) { i++; j++; } if (j == lenPattern) { // 匹配成功 printf("Pattern found at index: %d\n", i - j); j = table[j-1]; } else if (i < lenStr && str[i] != pattern[j]) { // 不匹配 if (j != 0) { j = table[j-1]; } else { i++; } } } free(table); } int main() { char str[] = "ABCABCDABABCDABCDABDE"; char pattern[] = "ABCDABD"; KMP(str, pattern); return 0; } ``` 此代码实现了KMP算法,首先通过`partialMatchTable`函数构建了部分匹配表,然后在`KMP`函数中进行字符串匹配,输出匹配成功的索引位置。在主函数中,我们使用了一个示例字符串和模式字符串进行测试,输出的结果是模式字符串在主字符串中的匹配位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值