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;
    }
    
    
  • 相关阅读:
    ADB命令大全
    Backup your Android without root or custom recovery -- adb backup
    Content portal for Pocketables Tasker articles
    Is there a way to detect if call is in progress? Phone Event
    Tasker to proximity screen off
    Tasker to detect application running in background
    Tasker to create toggle widget for ES ftp service -- Send Intent
    Tasker to proximity screen on
    Tasker to answer incoming call by pressing power button
    Tasker to stop Poweramp control for the headset while there is an incoming SMS
  • 原文地址:https://www.cnblogs.com/master-cn/p/12904782.html
Copyright © 2011-2022 走看看