SUSE暑假热身题题解

PS:对于多组测试数据,很多大一的同学可能是先处理结束,用数组装起来再统一输出,实际上可以给一组数据就输出一组数据,不需要统一输出哈。

程序代码

7-1:

冒泡法在这里就不多说了,不懂问度娘。
这道题的意思就是比较字符串的大小,比如这里有两个字符串,str1和str2,先比较这两个字符串的首字母大小(比较的是两者的ASSIC码),如果相等再比较第二个字符,以此类推。在c++中提供了string类,可以直接利用< >和==号来判断两个串的大小。Java中也用自带函数直接比较.
題目测试数据:
在这里插入图片描述

7-2:

这道题意思很简单,就是判断一个数是不是素数,在判断的时候,可以设置一个标记,假设每个数都是素数,

if(x%i==0){             //x表示需要判断的数,i的范围:可以取2<=i<=sqrt(x)
	flag=false;        //标记为假  
	break;           //跳出当前循环。
}

值得注意的地方是1不是素数。
題目测试数据:
在这里插入图片描述

7-3:

如果是男生,那么h=x/1.09,如果是女生h=x*1.09
要注意格式控制,保留两位小数。
題目测试数据:
在这里插入图片描述

7-4:

这道题可以考虑用字符串来解决,例如在样例中的”233008”里面,把这个字符串的每一位转换成数字(str[i]-‘0’表示将第字符串的第i位转换为数字)也可以用取余的方法%得到每一位.

7-5:

在输入字符串后,直接输出”hello “,再输出name

7-6:

判断是否是奇数,是就加入总和,然后最后输出就可以了.

題目测试数据:
在这里插入图片描述

7-7:

什么时是杨辉三角就不解释了,只是这道题格式要求很严,要注意3个地方
1:每一行最开始的数字前的空格个数
2:数字之间的空格
3:最后一行不能有换行符
举个例子,当输入n为6的时候,第一行前面有6-1个空格,再加上数字1占4位剩下的3个空格,所以第一行的数字1前面有8个空格。

題目测试数据:
在这里插入图片描述

7-8:

由于数据规模有50位,所以用字符串接收。开始的时候需要判断第一位是否是符号位。
之后便通过for循环查找2的个数。结果根据题目所给公式即可求出。

題目测试数据:
在这里插入图片描述

7-9:

这道题题意是告诉你火车经过的站台,同时告诉座位的数量,然后后面m行表示订单数量
根据座位的数量信息来返回是否能买到票,并返回余票数量。
思路:
站台名可以用一个数组来存储,数组的长度为N。
余票信息也用一个数组来表示,数组的长度为N-1。比如arr[0]就表示0号站台到1号站台之间剩余多少张票,arr[i]就表示第i号站台到第i+1号站台剩余多少张票。数组的初始值就是座位数量。
在输入购票订单时,先要判断乘车区间的数组的最小值能否满足其订票数量,如果满足,那么就可以购票,同时arr[i]到arrj要减去订票数量。如果不能满足,那么返回no同时返回订票区间(数组区间)最小的值来表示该区间的车票数量。

題目测试数据:
在这里插入图片描述

7-10:

接收字符串,然后再接收一个单字符,然后比较就行了,注意最后一个测试数据是空格.
題目测试数据:
在这里插入图片描述

7-11:

这道题的意思就是将字符串改为从右向左竖向排版。可以用一个char s[][]的二维数组来储存,将字符串str中的没一个字符按照从从上到下,从右到左的顺序赋值给,s数组。
需要

for(int j=line-1;j>=0;j--){             //从右到左
		for(int i=0;i<n;i++){         //从上到下
			if(count==len){         //count用来表示当前存储的字符数量
				arr[i][j]=' ';          //如果字符串已经存储满了,用空格来填充 
			}
			else arr[i][j]=str[count++];
		}
}

输出的时候,正向输出就行了,注意,最后一行应该不能有换行符。

題目测试数据:
在这里插入图片描述

7-12:

用dfs+剪枝就行了. 每个零钱有2种情况,拿与不拿,枚举下所有可能,然后再剪去不可能的结果就可以了.

代码:

import java.io.*;
import java.util.StringTokenizer;

public class S7_12 {
	static int[] rec = new int[1005];
	static int n, m;
	static boolean ok;

	public static void main(String[] args) throws IOException {
		Reader.init(System.in);
		n = Reader.nextInt();
		for (int i = 0; i < n; i++) {
			rec[i] = Reader.nextInt();
		}
		m = Reader.nextInt();
		f("",0,0);
		if (!ok)System.out.println("None");
	}

	static void f(String str, int num,int pos) {
		if (num > m) //剪枝
			return;
		if (num == m) {
			System.out.println(str.substring(0,str.length() - 1)); //最后一个不输出空格
			ok = true;
		}
		for (int i = pos; i < n; i++) {
				f(str + rec[i] + " ", num + rec[i],i+1);
			}
		}
	}
 

class Reader {
	static BufferedReader reader;
	static StringTokenizer tokenizer;

	static void init(InputStream input) {
		reader = new BufferedReader(new InputStreamReader(input));
		tokenizer = new StringTokenizer("");
	}

	static String next() throws IOException {
		while (!tokenizer.hasMoreTokens()) {
			tokenizer = new StringTokenizer(reader.readLine());
		}
		return tokenizer.nextToken();
	}

	static int nextInt() throws IOException {
		return Integer.parseInt(next());
	}

	static double nextDouble() throws IOException {
		return Double.parseDouble(next());
	}
}

7-13:

中缀表达式转换为后缀表达式需要通过栈来解决(不理解的同学,可以先在网上学一下)
转换规则:
1)如果遇到操作数,我们就直接将其输出。
2)如果遇到操作符,则我们将其放入到栈中,遇到左括号时我们也将其放入栈中。
3)如果遇到一个右括号,则将栈元素弹出,将弹出的操作符输出直到遇到左括号为止。注意,左括号只弹出并不输出。
4)如果遇到任何其他的操作符,如(“+”, “*”,“(”)等,从栈中弹出元素直到遇到发现更低优先级的元素(或者栈为空)为止。弹出完这些元素后,才将遇到的操作符压入到栈中。有一点需要注意,只有在遇到" ) “的情况下我们才弹出” ( “,其他情况我们都不会弹出” ( "。
5)如果我们读到了输入的末尾,则将栈中所有元素依次弹出。
注意的地方是,这道题数字前面有符号为,数字可能含有小数,所以需要额外考虑。

題目测试数据:
在这里插入图片描述

7-14:

求出每个同学的平均成绩,放进数组中,然后再排序,输出前M个就行了。

題目测试数据:
在这里插入图片描述

7-15:

深度优先搜寻

void dfs(int now){                     //当前位置
	if(count==n){                     //count表示路过的地道数量,n表示总数量
		cout<<now<<' ';              //这里满足条件了
		flag=true;                     //告诉其他递归函数,走完了,不需要再递归了
		return;
	}
	cout<<now<<' ';
	for(int i=1;i<=n;i++){
		if(arr[now][i]==1&&vis[i]==0){         //vis[]数组表示第i个点是否访问过
			count++;
			vis[i]=1;
			dfs(i);
			if(now==s){      //s表示起点,这里判断是否为起点只是不希望多输出空格
				cout<<now;
			}
			else cout<<now<<' ';
		}
	}
	return;
}

題目测试数据:
在这里插入图片描述

发布了343 篇原创文章 · 获赞 244 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_41280600/article/details/96130130
今日推荐