您的位置:首页 > 其它

计蒜客蓝桥杯模拟赛(五)总结

2017-04-01 16:40 239 查看
比赛一完,题目就看不了了只可以看到排名,题目不是很难,基本都是暴力,最后两个没做出来。。。,在这里存下代码,有些水题的代码没存

比赛地址:https://www.jisuanke.com/contest/652



-----------------------------------------九宫格---------------------------------------

#include <stdio.h>
int main()
{
int sum=0;
for(int a1=1;a1<=9;a1++)
for(int a2=1;a2<=9;a2++)
if(a1!=a2)
for(int a3=1;a3<=9;a3++)
if(a1!=a3&&a2!=a3)
for(int a4=1;a4<=9;a4++)
if(a1!=a4&&a2!=a4&&a3!=a4)
for(int a5=1;a5<=9;a5++)
if(a1!=a5&&a2!=a5&&a3!=a5&&a4!=a5)
for(int a6=1;a6<=9;a6++)
if(a1!=a6&&a2!=a6&&a3!=a6&&a4!=a6&&a5!=a6)
for(int a7=1;a7<=9;a7++)
if(a1!=a7&&a2!=a7&&a3!=a7&&a4!=a7&&a5!=a7&&a6!=a7)
for(int a8=1;a8<=9;a8++)
if(a1!=a8&&a2!=a8&&a3!=a8&&a4!=a8&&a5!=a8&&a6!=a8&&a7!=a8)
for(int a9=1;a9<=9;a9++)
if(a1!=a9&&a2!=a9&&a3!=a9&&a4!=a9&&a5!=a9&&a6!=a9&&a7!=a9&&a8!=a9)
{
int s1=a1+a2+a3;
int s2=a1+a4+a7;
if(a4+a5+a6==s1&&a7+a8+a9==s1&&a2+a5+a8==s2&&a3+a6+a9==s2)
sum++;
}
printf("%d\n",sum);
return 0;
}
-----------------------------------------------------组合数字----------------------------------------
#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
#include <stack>
#include <queue>
#include <vector>
#include <algorithm>
#define mem(a,b) memset(a,b,sizeof(a))
#define N 500000
#define inf 0x3f3f3f3f
#define M 1000000+2000
#define LL long long
using namespace std;
int x[100],vis[100],ans;
int judge()
{
if(x[1]*x[2]+x[3]*x[4]==x[5]*x[6]&&x[7]*x[8]-x[9]*x[10]==x[11]*x[12])
return 1;
return 0;
}
void dfs(int k)
{
if(k==13)
{
if(judge())
ans++;
return ;
}
for(int i=1; i<=13; i++)
{
if(vis[i]==0)
{
vis[i]=1;
x[k]=i;
dfs(k+1);
vis[i]=0;
}
}
}
int main()
{
ans=0;
mem(vis,0);
dfs(1);
printf("%d\n",ans);
}


---------------------------礼物盒--------------------------------------
#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
#include <stack>
#include <queue>
#include <vector>
#include <algorithm>
#define mem(a,b) memset(a,b,sizeof(a))
#define N 1000+20
#define inf 0x3f3f3f3f
#define M 1000000+2000
#define LL long long
using namespace std;
struct node
{
int c, k;
}a[1000];
bool cmp(node a, node b)
{
return a.c<b.c;
}
int main()
{
int sum = 0,cnt=0;
for (int i = 0; i<36; i++)
scanf("%d%d", &a[i].c, &a[i].k);
sort(a, a + 36, cmp);
for (int i = 0; i<36; i++)
{
if (a[i].k>20)continue;
if (cnt + a[i].c <= 100)
{
cnt += a[i].c;
sum ++;
}

}
cout << sum;
getchar(); getchar();
return 0;
}


-------------------------成绩查询----------------------------
#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <algorithm>
#define mem(a,b) memset(a,b,sizeof(a))
#define N 1000+20
#define inf 0x3f3f3f3f
#define M 1000000+2000
#define LL long long
using namespace std;
int main()
{
map<string, int>mp;
string s1,s2;
int score;
while (1)
{
cin>>s1;
if(s1=="insert")
{
cin>>s2>>score;
if(score>mp[s2])
mp[s2]=score;
}
else if(s1=="find")
{
cin>>s2;
if(mp[s2]==0)
cout<<"-1"<<endl;
else
cout<<mp[s2]<<endl;
}
else if(s1=="end")
{
break;
}

}
return 0;
}


----------------------------------------方程的解------------------------------------------
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
for(int x=1;x<999;x++)
for(int y=1;y<999;y++)
for(int z=1;z<999;z++)
if(11*x+13*y+17*z==2471&&13*x+17*y+11*z==2739)
{
cout<<x+y+z<<endl;
return 0;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: