一、题目链接
http://noi.openjudge.cn/ch0109/04/
二、解题思路(Java)
三、解题思路(C++)
四、Java程序
import java.util.Scanner;
class Student {
String name;
int score;
int vote;
char cadre;
char west;
int paper;
int scholarship;
public Student(String name, int score, int vote, char cadre, char west, int paper) {
this.name = name;
this.score = score;
this.vote = vote;
this.cadre = cadre;
this.west = west;
this.paper = paper;
scholarship = 0;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public int getVote() {
return vote;
}
public void setVote(int vote) {
this.vote = vote;
}
public char getCadre() {
return cadre;
}
public void setCadre(char cadre) {
this.cadre = cadre;
}
public char getWest() {
return west;
}
public void setWest(char west) {
this.west = west;
}
public int getPaper() {
return paper;
}
public void setPaper(int paper) {
this.paper = paper;
}
public int getScholarship() {
return scholarship;
}
public void setScholarship(int scholarship) {
this.scholarship = scholarship;
}
}
public class Main {
public Student maxScholarship(Student[] students) {
int n = students.length;
int max;
int index;
int scholarship;
int i;
for (i = 0; i < n; i++) {
scholarship = 0;
if (students[i].getScore() > 80 && students[i].getPaper() >= 1) {
scholarship = scholarship + 8000;
}
if (students[i].getScore() > 85 && students[i].getVote() > 80) {
scholarship = scholarship + 4000;
}
if (students[i].getScore() > 90) {
scholarship = scholarship + 2000;
}
if (students[i].getScore() > 85 && students[i].getWest() == 'Y') {
scholarship = scholarship + 1000;
}
if (students[i].getVote() > 80 && students[i].getCadre() == 'Y') {
scholarship = scholarship + 850;
}
students[i].setScholarship(scholarship);
}
max = students[0].getScholarship();
index = 0;
for (i = 1; i < n; i++) {
if (students[i].getScholarship() > max) {
max = students[i].getScholarship();
index = i;
}
}
return students[index];
}
public int totalScholarship(Student[] students) {
int ans = 0;
for (Student t : students) {
ans = ans + t.getScholarship();
}
return ans;
}
public static void main(String[] args) {
Main test = new Main();
Scanner input = new Scanner(System.in);
int N = input.nextInt();
Student[] students = new Student[N];
String name;
int score;
int vote;
char cadre;
char west;
int paper;
for (int i = 0; i < N; i++) {
name = input.next();
score = input.nextInt();
vote = input.nextInt();
cadre = input.next().charAt(0);
west = input.next().charAt(0);
paper = input.nextInt();
students[i] = new Student(name, score, vote, cadre, west, paper);
}
Student ans = test.maxScholarship(students);
System.out.println(ans.getName());
System.out.println(ans.getScholarship());
System.out.print(test.totalScholarship(students));
}
}
五、C++程序
#include <iostream>
using namespace std;
struct student
{
string name;
int score;
int vote;
char cadre;
char west;
int paper;
int scholarship;
};
int main()
{
int N;
cin >> N;
student stu[N];
int total = 0;
int i;
for (i = 0; i < N; i++)
{
cin >> stu[i].name;
cin >> stu[i].score;
cin >> stu[i].vote;
cin.get();
cin.get(stu[i].cadre);
cin.get();
cin.get(stu[i].west);
cin >> stu[i].paper;
stu[i].scholarship = 0;
if (stu[i].score > 80 && stu[i].paper >= 1)
{
stu[i].scholarship = stu[i].scholarship + 8000;
}
if (stu[i].score > 85 && stu[i].vote > 80)
{
stu[i].scholarship = stu[i].scholarship + 4000;
}
if (stu[i].score > 90)
{
stu[i].scholarship = stu[i].scholarship + 2000;
}
if (stu[i].score > 85 && stu[i].west == 'Y')
{
stu[i].scholarship = stu[i].scholarship + 1000;
}
if (stu[i].vote > 80 && stu[i].cadre == 'Y')
{
stu[i].scholarship = stu[i].scholarship + 850;
}
total = total + stu[i].scholarship;
}
int max = stu[0].scholarship;
int index = 0;
for (i = 1; i < N; i++)
{
if (stu[i].scholarship > max)
{
max = stu[i].scholarship;
index = i;
}
}
cout << stu[index].name << endl;
cout << stu[index].scholarship << endl;
cout << total;
return 0;
}