暴力枚举
直接暴力
遍历数组找出二倍关系sum++
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;int k,sum;
cin>>n;
int a[20];
while(n--)
{
k=0;sum=0;
int x;
while(cin>>x)
{
if(x==0) break;
k++;
a[k]=x;
}
for(int i=1;i<k;i++)
{
for(int j=i+1;j<=k;j++)
{
if(a[i]==2*a[j]||a[i]*2==a[j])
{
sum++;
}
}
}
cout<<sum<<endl;
}
return 0;
}
毫无技巧可言,六层循环暴力搞定。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int k;
int a[100];
while(cin>>k)
{
memset(a,0,sizeof(a));
for(int i=1;i<=k;i++)
{
cin>>a[i];
}
for(int i1=1; i1<=k-5; i1++)
{
for(int i2=i1+1; i2<=k-4; i2++)
{
for(int i3=i2+1; i3<=k-3; i3++)
{
for(int i4=i3+1; i4<=k-2; i4++)
{
for(int i5=i4+1; i5<=k-1; i5++)
{
for(int i6=i5+1; i6<=k; i6++)
{
printf("%d %d %d %d %d %d\n",a[i1],a[i2],a[i3],a[i4],a[i5],a[i6]);
}
}
}
}
}
}
}
return 0;
}
只需要注意一下前缀0就轻松AC
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
for(int i=0; i<1000; i++)
{
if(i>n)
{
if(i<10)
cout<<"00"<<i<<endl;
else if(i<100&&i>=10)
{
cout<<"0"<<i<<endl;
}
else
{
cout<<i<<endl;
}
}
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
char ch[105];
int k=0;
cin>>ch;
for(int i=0;ch[i];i++)
{
if(ch[i]>='0'&&ch[i]<='9')
k++;
}
cout<<k<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int num,o=0;
int a[100];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
cin>>num;
for(int i=0;i<n;i++)
{
if(num==a[i])
{
o=i+1;break;
}
}
cout<<o<<endl;
return 0;
}
本蒟蒻的方法是外层循环定点,两个计数器向前向后暴搜++,判断前后相等再++
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[1000];
for(int i=0; i<n; i++)
{
cin>>a[i];
}
int ans=0;
int counter1=0,counter2=0;
for(int i=0; i<n; i++)
{
counter1=0;
counter2=0;
for(int j=i; j>=0; j--)
{
if(a[j]>a[i])
{
counter1++;
}
}
for(int k=i; k<n; k++)
{
if(a[k]>a[i])
{
counter2++;
}
}
if(counter1==counter2)
{
ans++;
}
}
cout<<ans<<endl;
return 0;
}
把每一层编号都转成字符型,和高能数字比较,相等减去
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m,t;
cin>>m>>t;
int x;
char ch[100000];
char c;
c=t+'0';
x=m;
for(int i=1; i<=m; i++)
{
sprintf(ch,"%d",i);
for(int j=0; ch[j]; j++)
{
if(ch[j]==c)
{
x--;
break;
}
}
}
cout<<x<<endl;
return 0;
}
有点技巧的暴搜
被所有其他的矩形覆盖才算一个。
被覆盖就是minx>=,maxx<= 、 y同理。
#include<bits/stdc++.h>
using namespace std;
struct jx
{
int minx;
int miny;
int maxx;
int maxy;
};
int main()
{
int n;
while(cin>>n)
{
int sum=0;
struct jx a[n];
for(int i=0;i<n;i++)
{
cin>>a[i].minx>>a[i].maxx>>a[i].miny>>a[i].maxy;
}
for(int i=0;i<n;i++)
{
int k=0;
for(int j=0;j<n;j++)
{
if(a[i].minx>=a[j].minx&&a[i].maxx<=a[j].maxx&&a[i].miny>=a[j].miny&&a[i].maxy<=a[j].maxy)
k++;
}
if(k==n)
{
sum++;
}
}
cout<<sum<<endl;
}
return 0;
}
借鉴大佬的手笔。
#include<bits/stdc++.h>
using namespace std;
int main()
{
double min,x,y,dl,max,result,t;
int left,right;
while(cin>>x>>y>>dl)
{
min=left=right=dl;
result=x/y;
max=x>y?x:y;
x=ceil(x/max*dl);
y=ceil(y/max*dl);
while(x&&y)
{
t=x/y-result;
if(t>=0&&t<=min)
{
min=t;
left=x;
right=y;
}
if(x/y>=result)
x--;
else
y--;
}
cout<<left<<" "<<right<<endl;
}
return 0;
}
和前几天写的竞赛题差不多
思路就是看O前的C数和O后的W数,用C*W加和。
#include<bits/stdc++.h>
using namespace std;
struct oo
{
int c;
int w;
};
int main()
{
int N;
cin>>N;
string ch;
cin>>ch;
struct oo o[ch.size()];
memset(o,0,sizeof(o));
int cn=0,on=0,wn=0;
for(int i=0; i<ch.size(); i++)
{
if(ch[i]=='C')
{
cn++;
}
if(ch[i]=='O')
{
o[on].c=cn;
on++;
}
}
int t=on-1;
for(int i=ch.size()-1; i>=0; i--)
{
if(ch[i]=='W')
{
wn++;
}
if(ch[i]=='O')
{
o[t].w=wn;
t--;
}
if(t<0) break;
}
long long sum=0;
for(int i=0; i<on; i++)
{
sum=sum+o[i].c*o[i].w;
}
cout<<sum<<endl;
return 0;
}
然后蒟蒻借鉴大佬发现了更简单的写法
只要记录C的个数再在遇到O时把C一起加进来,有W时把CO一起加进来,就得到了结果。
#include<bits/stdc++.h>
using namespace std;
int l;
long long c,co,cow;
int main()
{
int N;
cin>>N;
string s;
cin>>s;
l=s.size();
for(int i=0;i<N;i++)
{
if(s[i]=='C')c++;
if(s[i]=='O')co+=c;
if(s[i]=='W')cow+=co;
}
cout<<cow<<endl;
return 0;
}
这是一道难倒蒟蒻的题。
暴力打表
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[5842]={}; //直接把打好的表搞进来。
int n;
while(cin>>n)
{
if(n==0)
{
return 0;
}
else
{
cout<<a[n-1]<<endl;
}
}
}
密恐勿入!!!这有打好的表
下面推荐大佬的写法。
这里有打表的方法
这位是算法。不打表的那种~~
大一寒假训练三(暴力枚举)