其他分享
首页 > 其他分享> > 2021-3-21-第三周

2021-3-21-第三周

作者:互联网

习题

A、超级青蛙

题目描述

输入

输出

样例输入 Copy

1
2

样例输出 Copy

1
2

代码

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n;
		while(sc.hasNext()){
			n = sc.nextInt();
			int he=1;
			for(int i=1;i<n;i++){
				he*=2;
			}
			System.out.println(he);
		}

	}

}

B、汉诺塔

题目描述

第1步:1号盘从A柱移至B柱 
第2步:2号盘从A柱移至C柱 

输入

输出

样例输入 Copy

3

样例输出 Copy

第1步:1号盘从A柱移至C柱
第2步:2号盘从A柱移至B柱
第3步:1号盘从C柱移至B柱
第4步:3号盘从A柱移至C柱
第5步:1号盘从B柱移至A柱
第6步:2号盘从B柱移至C柱
第7步:1号盘从A柱移至C柱

代码

#include<stdio.h>
int i=0;
void cbb(int n,char x,char y){
	printf("第%d步:%d号盘从%c柱移至%c柱\n",++i,n,x,y);//1号盘从A柱移至B柱
}
void move(int n, char x, char y, char z)//将n个圆盘从x柱子上借助y柱子移动到z柱子上
{
     if(n>0)
     {
         move(n-1,x,z,y);
         cbb(n,x,z);
         move(n-1,y,x,z);
      }
 }
int main()
{
	
    int n;//n代表圆盘的个数
    /*A,B,C分别代表三个柱子*/
    /*char ch1 ='A';
	char ch2 = 'B';
    char ch3 = 'C';*/
     
    while(scanf("%d",&n)!=EOF){
		i=0;
		move(n,'A','B','C');
		printf("\n");
	}
     return 0;
}

【一定要注意看题目要求,看是英文符号还是中文符号,看是否需要换行】

C、汉诺塔||

题目描述

输入

输出

样例输入 Copy

2
60 1
3 1

样例输出 Copy

576460752303423488
4

代码

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		 
		long N,K,T;
		T = sc.nextInt();
		while(sc.hasNext()) {
			long cbb = 1;
			if(T>0) {
				N = sc.nextInt();
				K = sc.nextInt();
				for(int i=0;i<N-K;i++) 
					cbb*=2;
				T--;
				System.out.println(cbb);
			}
			else
				System.exit(0);
									
		}

	}

}

D、Kimi的早餐店

题目描述

输入

输出

样例输入 Copy

1 2
1 3
2 3

样例输出 Copy

2
4
3

代码

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
	public static Map<Integer,Long>map = new HashMap<Integer,Long>();

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int from,to,i;
		while(sc.hasNext()) {
			from = sc.nextInt();
			to = sc.nextInt();
			long juele = 0;
			String [] cbb = new String[80];
			for(i=from;i<=to;i++) {
				juele+=cdbb(i);
			}
			System.out.println(juele);
 
		}

	}
	public static long cdbb(int n) {		
		if(n==1)
			return 1;
		else if(n==2)
			return 1;
		else {
			if(map.containsKey(n)) 
				return map.get(n);			
			else
				map.put(n, cdbb(n-1)+cdbb(n-2));
		}
		return map.get(n);		
	}

}

E、字母全排列

题目描述

输入

输出

样例输入 Copy

1
2

样例输出 Copy

a

ab
ba

代码

import java.util.Scanner;

public class Main {
	public static void cbb(char[] cdbb,int first,int second) {
		char temp;
		if(first==second) {
			//当只要求对数组中一个字母进行全排列时,只要按该数组输出即可
			for(int i=0;i<=second;i++)
				System.out.print(cdbb[i]);
			System.out.println(" ");
		}
		else {//多个字母全排列
			for(int i=first;i<=second;i++) {
				temp = cdbb[first];//交换数组第一个元素与后续的元素
				cdbb[first] = cdbb[i];
				cdbb[i] = temp;
				cbb(cdbb,first+1,second);//后续元素递归全排列
				temp = cdbb[i];
				cdbb[i] = cdbb[first];
				cdbb[first] = temp;//将交换后的数组还原
			}
			
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n;
		while(sc.hasNext()) {
			n = sc.nextInt();
			if(0<n&&n<=26){
			char[] ch = new char[] {'a','b','c','d','e','f','g','h','i','j','k','l',
					'm','n','o','p','q','r','s','t','u','v','w','x','y','z'};		
			cbb(ch,0,n-1);
			}
		}

	}
	

}

【不要学我广大朋友们,我只是懒,且不会,不至于把26个字母全写上,可以用其他方法,不知道问什么平台给我过了】

F、九组数分数

题目描述

输入

输出

代码

import java.util.Scanner;

public class Main {
	
	public static void cbb(int[] cdbb) {
		
		int a = cdbb[0]*1000+cdbb[1]*100+cdbb[2]*10+cdbb[3];//分子
		
		//分母
		int b = cdbb[4]*10000+cdbb[5]*1000+cdbb[6]*100+cdbb[7]*10+cdbb[8];
	
		if(a*3==b) {
			System.out.println(a+"/"+b);
		}
	}
	
	public static void first(int bb[],int k,int n) {// 全排列
		int i,temp;
		if(k==n) {
			cbb(bb);
		}
		for(i=n;i>=k;i--) {
			
			{temp =  bb[k];//交换数组第一个元素与后续的元素
			 bb[k] =  bb[i];
			 bb[i] = temp;}
			
			first( bb,k+1,n);//后续元素递归全排列
			
			{temp =  bb[i];
			 bb[i] =  bb[k];
			 bb[k] = temp;//将交换后的数组还原
			 }
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n;
		
		int fan[] = new int[]{1,2,3,4,5,6,7,8,9};
		
		n = fan.length;
		
		first(fan,0,n-1);

	}

}

标签:21,int,cdbb,第三周,2021,sc,号盘,public,Scanner
来源: https://blog.csdn.net/qq_45823118/article/details/115095380