题解(首发!!)
2026-03-22 10:17:17
发布于:辽宁
2阅读
0回复
0点赞
当你老老实实的打三重循环时,提交以后,你就掉坑里了。就比如我第一次打的这个:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int ans=0;
for(int a=1;a<=n-2;a++)
{
for(int b=a;b<=n-2;b++)
{
for(int c=b;c<=n-2;c++)
{
if(a+b>c&&a+c>b&&b+c>a&&a+b+c==n) ans++;
}
}
}
cout<<ans;
}

你就会发现:TLE了!
所以我们需要把代码节省一点,把三重循环换成二重循环(即c循环去掉),而意思和以上代码一样,即
所以可得代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int ans=0;
for(int a=1;a<=n-2;a++)
{
for(int b=a;b<=n-2;b++)
{
int c=n-a-b;
if(a+b>c&&a+c>b&&b+c>a&&c>=b) ans++;
}
}
cout<<ans;
}
这里空空如也







有帮助,赞一个