Advertisement

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)

还没有任何评论哟~