博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2020天梯赛训练1 题目整理
阅读量:3904 次
发布时间:2019-05-23

本文共 8265 字,大约阅读时间需要 27 分钟。

7-1 比较大小 (10分)

题目链接:

代码如下:

import java.util.Arrays;import java.util.Scanner;public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); int[] a=new int[3]; for (int i=0;i<3;i++) {
a[i]=sc.nextInt(); } Arrays.sort(a); for(int i=0;i<3;i++) {
System.out.print(a[i]); if(i<2) System.out.print("->"); } System.out.println(); }}

7-2 计算指数 (5分)

题目链接:

代码如下:

import java.util.Scanner;public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); int n=sc.nextInt(); System.out.println("2^"+n+" = "+(1<

7-3 计算阶乘和 (10分)

题目链接:

代码如下:

import java.util.Scanner;public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int ans=0; int x=1; for (int i=1;i<=n;i++) {
x*=i; ans+=x; } System.out.println(ans); }}

7-4 简单题 (5分)

题目链接:

代码如下:

public class Main {
public static void main(String[] args) {
System.out.println("This is a simple problem."); }}

7-5 跟奥巴马一起画方块 (15分)

题目链接:

代码如下:

import java.util.Scanner;public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); int n =sc.nextInt(); String s = sc.next(); long lie = Math.round(n/2.0); for (long i=0;i

7-6 个位数统计 (15分)

题目链接:

代码如下:

import java.util.Scanner;public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); String s = sc.next(); int[] num =new int[10]; for (int i=0;i
0) System.out.println(i+":"+num[i]); } }}

7-7 查验身份证 (15分)

题目链接:

代码如下:

import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); int n =sc.nextInt(); int [] quan={
7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; String map = "10X98765432"; List
list = new ArrayList<>(); for (int i=0;i
'9') {
flag=1; break; } int x = s.charAt(j)-'0'; sum=(sum+x*quan[j])%11; } if(flag==1) {
list.add(s); continue; } if(s.charAt(s.length()-1)==map.charAt(sum)) continue; list.add(s); } if(list.size()==0) System.out.println("All passed"); else {
for(int i=0;i

7-8 计算摄氏温度 (5分)

题目链接:

代码如下:

public class Main {
public static void main(String[] args) {
System.out.println("fahr = "+100+", celsius = "+5*(100-32)/9); }}

7-9 打印沙漏 (20分)

题目链接:

代码如下:

import java.util.Scanner;public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String s = sc.next(); int x=0; while(2*x*x-1<=n) x++; x--; for (int i=x;i>0;i--) {
for (int j=0;j

7-10 连续因子 (20分)

题目链接:

代码如下:

import java.util.Scanner;public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); long n =sc.nextLong(); long tn=n; int num=0; long ans=0; for (long i=2;i*i<=n;i++) {
//if(tn
num) {
num=tnum; ans=tans; } } if(num==0) {
num=1; ans=n; } System.out.println(num); for (int i=0;i

7-11 链表去重 (25分)

题目链接:

分析:
建两个头指针分别表示没有重复元素的链表和重复元素的链表
代码如下:

#include 
using namespace std;const int maxn=1e6+5;struct node{
int next; int addr; int val;};int vis[100000+5];struct node a[maxn];int st,n;int rst=-1,rtnod=rst;int lst=-1,ltnod=lst;int main(){
memset(vis,0,sizeof(vis)); scanf("%d%d",&st,&n); for (int i=0;i

7-12 搜索树判断 (25分)

题目链接:

代码如下:

#include 
#include
#include
#include
#include
#include
using namespace std;const int maxn=1e3+5;int n;int a[maxn];vector
v1,v2,v3,V2,V3;struct node{ struct node* left,*right; int data;};node* Create (node *root,int data){ if(root==NULL) { node* t=(node*)malloc(sizeof(node)); t->data=data; t->left=t->right=NULL; root=t; } else { if(root->data>data) { root->left=Create(root->left,data); } else { root->right=Create(root->right,data); } } return root;}void Traverse1(node* root){ if(root) { v2.push_back(root->data); Traverse1(root->left); Traverse1(root->right); }}void Traverse2(node* root){ if(root) { v3.push_back(root->data); Traverse2(root->right); Traverse2(root->left); }}void Traverse3(node* root){ if(root) { Traverse3(root->left); Traverse3(root->right); V2.push_back(root->data); }}void Traverse4(node* root){ if(root) { Traverse4(root->right); Traverse4(root->left); V3.push_back(root->data); }}int main(){ scanf("%d",&n); node * root=NULL; for (int i=0;i

7-13 回文串问题 (25分)

题目链接:

分析:
找出正序字符串和倒序字符串的最长公共子串,然后用字符串长度减去最长公共子串的长度就是答案。
代码如下:

import java.util.Scanner;public class Main {
public static void main(String[] args) {
final int maxn=1005; Scanner sc = new Scanner(System.in); String s = sc.next(); String rs =""; for (int i=s.length()-1;i>=0;i--) rs+=s.charAt(i); int[][]dp = new int[maxn][maxn]; for (int i=1;i<=s.length();i++) {
for (int j=1;j<=rs.length();j++) {
if(s.charAt(i-1)==rs.charAt(j-1)) {
dp[i][j]=Math.max(dp[i][j],dp[i-1][j-1]+1); } else {
dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]); } } } System.out.println(s.length()-dp[s.length()][s.length()]); }}

7-14 社交集群 (30分)

题目链接:

分析:
并查集,通过各自的爱好进行并查集unit操作,最后通过find统计个数。
代码如下:

import java.util.*;public class Main {
public static int find(int a,int[] pre) {
if(a==pre[a]) return a; return pre[a]=find(pre[a],pre); } public static void unit(int a,int b,int[] pre) {
int fa=find(a,pre); int fb=find(b,pre); if(fa!=fb) pre[fa]=fb; } public static void main(String[] args) {
Scanner sc = new Scanner(System.in); int n = sc.nextInt(); final int maxn=1005; int[][] hob = new int[maxn][maxn]; int[] pre = new int[maxn]; int[] kind = new int [maxn]; for (int i=0;i
> list = new ArrayList<>(); for (int i=0;i
temp = new ArrayList<>(); for (int j=0;j
temp=list.get(i); for (int j=i+1;j

7-15 特殊堆栈 (30分)

题目链接:

分析:
树状数组+二分查找
这个题用java写会超时。
代码如下:

#include 
using namespace std;const int maxn=1e5+5;int t[maxn];int Max=-1;int lowbit(int x){
return x&(-x);}void add(int loc,int data){
for (int i=loc;i
=1;i-=lowbit(i)) ans+=t[i]; return ans;}int binary (int target){
int ans=-1; int left=1,right=Max; while(left<=right) {
int mid=(left+right)/2; if(sum(mid)
st; while(n--) {
char cmd[30]; scanf("%s",cmd); if(cmd[1]=='o') {
if(st.size()==0) {
printf("Invalid\n"); continue; } int temp=st.top(); st.pop(); add(temp,-1); printf("%d\n",temp); } else if(cmd[1]=='u') {
int temp; scanf("%d",&temp); Max=max(Max,temp); st.push(temp); add(temp,1); } else {
if(st.size()==0) {
printf("Invalid\n"); continue; } int target=(st.size()+1)/2; int ans=binary(target); printf("%d\n",ans); } }}

转载地址:http://vcaen.baihongyu.com/

你可能感兴趣的文章
一些学习资源网址
查看>>
OpenCV新手
查看>>
链接另存为怎么总是HTM格式的文件呢?解决办法!
查看>>
【Word 2010】重新开始编号
查看>>
【福听阅读器】为PDF文档添加书签和子书签
查看>>
【mathtype6.7】word2010公式编号
查看>>
【office 2010】word排版之长英文单词自动换行和英文对齐问题
查看>>
solidworks2011 打开后界面消失
查看>>
【VS2010】C++多线程同步与互斥简单运用
查看>>
宏定义中#跟##作用
查看>>
初次使用VS2010基于C++开发项目碰到的问题及解决方法
查看>>
error C2664: “CreateFileW”: 不能将参数 1 从“char *”转换为“LPCWSTR”
查看>>
调试串口通用程序的几种技巧
查看>>
GUI 编辑框中读写矩阵
查看>>
matlab成段注释
查看>>
matlab数据的导入和导出,以matlab工作区workspace为source和destination
查看>>
获取字节数
查看>>
福听阅读器 背景色设置
查看>>
保护眼睛 电脑设置
查看>>
【云端3.4 Beta】云端无法启动,从服务器返回了一个参照
查看>>