目录
- 前言
- 正文
- 蠢代码 - 1
- 蠢代码 - 2
- 蠢代码 - 3
- 提醒!
- 蠢代码 - 4
- 总结
前言
每个人的身上都有毛毛
每个人的代码有些十分蠢,正巧,我也有!
一看到CSDN的活动《你写过的最蠢的代码是?》,我立刻想要参加来告诉大家一些我蠢蠢的代码以及这些代码的缺点,我们如何去避免。
惊喜
正文
蠢代码 - 1
区间和大家应该都很熟悉吧!用前缀和就OK了,但我……
#include <bits/stdc++.h>
using namespace std;
int a[100005]
int main()
{int n;cin>>n;for(int i=1; i<=n; i++) cin>>a[i];int sum=0;int l,r;cin>>l>>r;for(int i=l; i<=r; i++) sum+=a[i];cout<<sum;return 0;
}
暴力出奇迹!
最后,喜提 TLE 一枚……
最应该用的是使用前缀和(以后会讲):
#include <iostream>
using namespace std;
int a[100005],n,q,l,r,sa[100005];
int main()
{cin>>n;for(int i=1; i<=n; i++){cin>>a[i];sa[i]=a[i]+sa[i-1];}cin>>l>>r;cout<<sa[r]-sa[l-1]<<endl;return 0;
}
蠢代码 - 2
A+B Problem 大家都很熟悉,我本应该写:
#include <iostream>
using namespace std;int main()
{int a,b;cin>>a>>b;cout<<a+b;return 0;
}
但是我写的是:
#include <iostream>
using namespace std;int main()
{int 博主,牛掰;cin>>博主>>牛掰;cout<<博主+牛掰;return 0;
}
(注:语句在C++中十分可刑)
蠢代码 - 3
我第一次写二叉树+前序遍历是在第一次,写二叉树时没有使用new给二叉树内存空间,如下:
#include <iostream>
using namespace std;struct Node {int value;Node* left;Node* right;
};
void qianxv(Node* root) {if (root == nullptr) {return;}cout << root->value << " "; preOrderTraversal(root->left);preOrderTraversal(root->right);
}
int main() {Node* tree;tree->value = 1;tree->left->value = 3;tree->left->left->value = 114;tree->left->right->value = 114514;cout << "前序遍历结果:" << endl;preOrderTraversal(tree);return 0;
}
喜提 E R R O R {\Huge \mathbf{{\color{Red} ERROR}}} ERROR 一枚!
正确 {\Huge \mathbf{{\color{Red} 正确}}} 正确 的是:
#include <iostream>
using namespace std;struct Node {int value;Node* left;Node* right;
};
void qianxv(Node* root) {if (root == nullptr) {return;}cout << root->value << " "; preOrderTraversal(root->left);preOrderTraversal(root->right);
}
int main() {Node* tree = new Node();tree->value = 1;tree->left = new Node();tree->left->value = 3;tree->left->left = new Node();tree->left->left->value = 114;tree->left->right = new Node();tree->left->right->value = 114514;cout << "前序遍历结果:" << endl;preOrderTraversal(tree);return 0;
}
博主感受:点我
提醒!
一定要使用关键字 new 给指针开辟空间!
蠢代码 - 4
题目要我求:
∑ i = 1 N f ( i ) {\color{Red} \mathcal{{\Huge \sum_{i=1}^{N} f(i)} } } i=1∑Nf(i)
并规定:
f ( N ) = N 的约数个数 {\Huge \mathcal{{\color{Red} f(N)=N 的约数个数} } } f(N)=N的约数个数
本以为:
#include <iostream>
using namespace std;int main() {int n;cin >> n;int sum = 0;for (int i = 1; i <= n; i++) {for (int j = 1; j*j <= i; j++) {if (i % j == 0) {sum++;if (j != i / j) sum++;}}}cout << sum << endl;return 0;
}
但 T L E {\Huge \mathbf{{\color{Blue} TLE}}} TLE 了呜呜
正确的应该是:
#include <iostream>
using namespace std;
int main() {int n,sum = 0;cin >> n;for (int i = 1; i <= n; i++) sum+=n/i;cout << sum << endl;return 0;
}
提高警惕 {\color{Red} \mathcal{{\Huge 提高警惕} } } 提高警惕 博主感受:点我
总结
此文讲了我的蠢蠢的代码,希望大家不要模仿!
1379 号:
不要回答!
不要回答!!
不要回答!!!
国家反诈中心:你!