【Java】【C++】【P1598 垂直柱状图】

package myPackage;
import java.util.Scanner;
public class Main{
    
    
	public static void main(String[] args){
    
    
		Scanner in=new Scanner(System.in);
		String[] input=new String[4];
		int[] cnt=new int[26],row=new int[26];
		for(int i=0;i<4;i++) {
    
    
			input[i]=in.nextLine();
			for(int j=0;j<input[i].length();j++) {
    
    
				if(input[i].charAt(j)>='A'&&input[i].charAt(j)<='Z') {
    
    
					cnt[input[i].charAt(j)-65]++;
				}
			}
		}
		for(int i=0;i<26;i++) {
    
    
			for(int j=i;j<26;j++) {
    
    
				if(cnt[j]>=row[i]) {
    
    
					row[i]=cnt[j];
				}
			}
		}
		int L=row[0];
		int[]col=new int[L];
		int[][]mat=new int[L][26];
		for(int i=0;i<L;i++) {
    
    
			for(int j=0;j<26;j++) {
    
    
				if(row[j]>i) {
    
    
					mat[i][j]=1;
					col[i]+=mat[i][j];
				}
			}
		}
		for(int i=0;i<26;i++) {
    
    
			for(int j=0;j<cnt[i];j++) {
    
    
				mat[j][i]=2;
			}
		}
		for(int i=L-1;i>=0;i--) {
    
    
			for(int j=0;j<26;j++) {
    
    
				if(mat[i][j]==2) {
    
    
					System.out.print("*");
				}else if(mat[i][j]==1){
    
    
					System.out.print(" ");
				}
				if(j<col[i]-1) {
    
    
					System.out.print(" ");
				}
			}
			System.out.println();
		}
		System.out.println("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");
	}
}


#include<bits/stdc++.h>
using namespace std;
char str[205][205];
int cnt[50];
int maxm[205];
int main() {
    
    
 	for (int i = 1; i <= 4; i++) {
    
    
	  	string s;
	  	getline(cin, s);
	  	for (int j = 0; j < s.size(); j++) {
    
    
	   	if (s[j] >= 'A' && s[j] <= 'Z') {
    
    
	    	cnt[s[j] - 'A']++;
	  	}
  	}
 }
 int maxn = 0;
 for (int i = 0; i < 26; i++) {
    
    
 	maxn = max(maxn, cnt[i]);
 }
 for (int j = 0; j < 26; j++) {
    
    
  	str[maxn][j] = (char)('A' + j);
 }
 for (int j = 0; j < 26; j++) {
    
    
  	int tmp = cnt[j];
 	for (int i = maxn - tmp; i < maxn; i++) {
    
    
  		str[i][j] = '*';
  		maxm[i] = max(maxm[i], j);
  	}
 }
 for (int i = 0; i < maxn; i++) {
    
    
  	for (int j = 0; j <= maxm[i]; j++) {
    
    
   		if (str[i][j] != '*') {
    
    
    		str[i][j] = ' ';
   		}
   		cout << str[i][j];
  		if (j != maxm[i]) {
    
    
    		cout << ' ';
   		}
 	}
  	cout << endl;
 }
 for (int i = 0; i < 26; i++) {
    
    
	  cout << str[maxn][i];
	  if (i != 25) {
    
    
		   cout << ' ';
	  }
 }
 cout << endl;
 return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_57937908/article/details/121866628
今日推荐