2017计算机学科夏令营上机考试
发布时间
阅读量:
阅读量
A 判断素数个数
需要注意x和y的大小比较!!
#include<iostream>
#include<cmath>
using namespace std;
bool isprime(int x)
{
int i;
for (i=2;i<=sqrt(x);i++)
if (x%i==0)
return false;
return true;
}
int main()
{
int n,i,m,count=0;
cin>>n>>m;
if (n>m)
swap(n,m);
for (i=n;i<=m;i++)
if (i==1)
continue;
else if (isprime(i))
count++;
cout<<count;
return 0;
}
C:岛屿周长
到LeetCode上找到了原题,以为要dfs,没想到是一道水题。一遍AC,没陷阱。
您将获得一个二维整数网格地图,在此地图中数字1代表陆地、数字0代表水域。每个网格单元格通过水平或垂直方向相互连接(不包括对角线)。整个网格被水所包围,并且仅存在一个岛屿(即一组或多个相连的陆地单元格)。该岛屿内部没有‘湖泊’(即内部水体必须与周围水域连通)。每个单元格是一个边长为1的正方形。该网格呈矩形形状且其宽度和高度均不超过100个单位,请计算该岛屿的周长
Example:
class Solution {
public:
int islandPerimeter(vector<vector<int>>& grid) {
int i,j;
int ans=0,count;
for (i=0;i<grid.size();i++)
for (j=0;j<grid[i].size();j++)
if (grid[i][j]==1)
{
count=0;
if (i==0 || grid[i-1][j]==0) count++;
if (j==0 || grid[i][j-1]==0) count++;
if (i+1==grid.size() || grid[i+1][j]==0) count++;
if (j+1==grid[i].size() || grid[i][j+1]==0) count++;
ans+=count;
}
return ans;
}
};
D:Safecracker
表示这是一道考阅读理解的题。以为需要技巧,然而可以暴力。。。
自己做的时候居然出了一些小差错!太不应该了。。。
可以提交的题目连接:点击打开链接
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
char ans[6];
bool flag;
void solve(long long ta,string s)
{
int i,j,k,m,n;
flag=false;
long long v, w, x, y,z,target;
sort(s.begin(),s.end());
for (i=s.length()-1;i>=0;i--)
for (j=s.length()-1;j>=0;j--)
for (k=s.length()-1;k>=0;k--)
for (m=s.length()-1;m>=0;m--)
for (n=s.length()-1;n>=0;n--)
{
if (i==j || i==k || i==m | i==n || j==k || j==m || j==n || k==m || k==n || m==n)
continue;
v=(long long)s[i]-'A'+1;w=(long long)s[j]-'A'+1;x=(long long)s[k]-'A'+1;y=(long long)s[m]-'A'+1; z=(long long)s[n]-'A'+1;
target=v - pow(w,2)+ pow(x,3)- pow(y,4)+ pow(z,5);
if (target==ta)
{
ans[0]=s[i];ans[1]=s[j];ans[2]=s[k];ans[3]=s[m];ans[4]=s[n];ans[5]='\0';
flag=true;
return;
}
}
}
int main()
{
long long n;
string s;
while(cin>>n>>s)
{
if (n==0 && s=="END")
break;
solve(n,s);
if (flag)
cout<<ans<<endl;
else
cout<<"no solution"<<endl;
}
return 0;
}
该系统实现了对堆数据结构的支持:
全部评论 (0)
还没有任何评论哟~
