zoukankan      html  css  js  c++  java
  • 程序设计思维与实践 Week11 作业 (3/4/数据班)

    程序设计思维与实践 Week11 作业 (3/4/数据班)

    A - 必做题11-1

    问题分析

    在20年内,年积攒的收入和房价,逐年做比较,达到了就认为可买下,20年还未达到则输出impossible

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	int N, K;
    	cin>>N>>K;
    	int M=1;
    	double in=N;
    	double S=200;
    	while(M<=20)
    	{
    		if(in>=S){
    			break;
    		}
    		M++;
    		in+=N;
    		S*=(1+(double)K/100.0);
    		
    	}
    	if(M>20){
    		cout<<"Impossible"<<endl;
    	}
    	else{
    		cout<<M<<endl;
    	}
    	return 0;
     } 
    
    

    B - 必做题11-2

    问题分析

    看一下代码吧,里边列出了旋转的公式,按照公式算出三种旋转后的方阵,存在矩阵里,再注意和老师的要求做对比。

    #include<bits/stdc++.h>
    using namespace std;
    int mtrx[5][25][25];//0,1,2,3分别代表0,90,180,270旋转,4代表老师期望 
    int n;
    bool is_equal(int k)
    {
       bool ans=1;
       for(int i=0;i<n;++i){
       	for(int j=0;j<n;++j){
       		if(mtrx[k][i][j]!=mtrx[4][i][j]){
       			ans=0;
       			break;
       		}
       	}
       }
       return ans;
    }
    int main()
    {
       cin>>n;
       int tmp;
       for(int i=0;i<n;++i){
       	for(int j=0;j<n;++j){
       		cin>>tmp;
       		mtrx[0][i][j]=tmp;
       		mtrx[1][j][n-i-1]=tmp;
       		mtrx[2][n-i-1][n-j-1]=tmp;
       		mtrx[3][n-j-1][i]=tmp;
       	}
       }/*
       for(int k=0;k<4;++k){
       	for(int i=0;i<n;++i){
       		for(int j=0;j<n;++j){
       			cout<<mtrx[k][i][j]<<' ';
       		}
       		cout<<endl;
       	}
       	cout<<endl;
       }*/
       for(int i=0;i<n;++i){
       	for(int j=0;j<n;++j){
       		cin>>tmp;
       		mtrx[4][i][j]=tmp;
       	}
       }
       for(int k=0;k<4;++k){
       	if(is_equal(k)){
       		cout<<k<<endl;
       		return 0;
       	}
       }
       cout<<"-1"<<endl;
       return 0;
    }
    
    
    

    C - 必做题11-3

    问题分析

    思路同上题,确定映射关系,然后解密即可。

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
       string s;
       getline(cin,s);
       int len=s.length();
       for(int i=0;i<len;++i){
       	if(s[i]>='F'&&s[i]<='Z'){
       		cout<<(char)((int)s[i]-5);
       	}
       	else if(s[i]>='A'&&s[i]<='E'){
       		cout<<(char)((int)s[i]+21);
       	}
       	else{
       		cout<<s[i];
       	}
       }
       cout<<endl;
       return 0;
    }
    

    D - 必做题11-4

    问题分析

    参考了别人的代码,这个题自己当时完全不会做。

    #include <bits/stdc++.h>
    using namespace std;
    //参考了他人的代码 
    int main()
    {
    	int n;
    	int cnt1=0,cnt2=0;
    	int mx=0;
    	int a[100000+5];
    	cin>>n;
    	for (int i=0;i<n;i++){
    		cin>>a[i];
    	}
    		
    	for (int i=0; i<n; i++)
    	{
    		if(a[i]==1)
    		{
    			cnt1++;
    			if(a[i+1]!=1)
    			{
    				if(cnt1>=cnt2)
    					mx=max(mx,2*cnt2);
    				else
    					mx=max(mx,2*cnt1);
    				cnt2=0;
    			}
    		}
    		else if(a[i]==2)
    		{
    			cnt2++;
    			if(a[i+1]!=2)
    			{
    				if(cnt1>=cnt2)
    					mx=max(mx,2*cnt2);
    				else
    					mx=max(mx,2*cnt1);
    				cnt1=0;
    			}
    			
    		}	
    	}
    	cout<<mx<<endl;
    	return 0;
    }
    
    
  • 相关阅读:
    UOJ222 【NOI2016】区间
    BZOJ3631 [JLOI2014]松鼠的新家
    BZOJ 1001 [BeiJing2006]狼抓兔子
    poj2488 A Knight's Journey裸dfs
    hdu 4289 网络流拆点,类似最小割(可做模板)邻接矩阵实现
    hdu 4183 EK最大流算法
    HDU 4180 扩展欧几里得
    HDU 4178 模拟
    HDU 4177 模拟时间问题
    hdu 4185 二分图最大匹配
  • 原文地址:https://www.cnblogs.com/master-cn/p/12904782.html
Copyright © 2011-2022 走看看