记负均正
import java.io.*;
import java.util.*;
/*首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。*/
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
while((str=br.readLine())!=null){
int n = Integer.parseInt(str);
String[] nums=br.readLine().split(" ");
int negative=0;
int positive=0;
int sum=0;
for(int i=0;i<nums.length;i++){
int num=Integer.parseInt(nums[i]);
if(num<0){
negative++;
}else if(num>0){
sum+=num;
positive++;
}
}
System.out.println(negative+" "+Math.round(sum*10.0/positive)/10.0);
}
}
}
#include <iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
double sum=0,countzheng=0;
int countfu=0,x=0;
for(int i=0;i<n;i++)
{
cin>>x;
if(x>0){sum+=x;countzheng++;}
else if(x<0){countfu++;}
}
if(countzheng>0)
{
sum=sum/countzheng;
}
cout<<countfu<<" ";
printf("%.1f",sum);
cout<<endl;
}
}
记负均正2
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.*;
public class Main{
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int nNum=0;
int pNum=0;
int pSum=0;
String str;
while((str=br.readLine())!=null){
int n=Integer.valueOf(str);
if(n>=0){
pNum++;
pSum+=n;
}else{
nNum++;
}
}
System.out.println(nNum);
System.out.println(Math.round(pSum*10.0/pNum)/10.0);
}
}
#include<iostream>
using namespace std;
int main(){
double sum=0;
double avg=0;
int n1=0;
int n2=0;
int x;
while(cin>>x){
if(x>=0){
n1++;
sum+=x;
}else{
n2++;
}
}
avg=sum/n1;
cout<<n2<<endl;
printf("%.1f\n",avg);
}
输入整型数组和排序标识,对其元素按照升序或降序进行排序
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputCount;
while ((inputCount = br.readLine()) != null) {
int count = Integer.parseInt(inputCount);
String[] input = br.readLine().split(" ");
int flag = Integer.parseInt(br.readLine());
int[] num = new int[input.length];
for (int i = 0; i < input.length; i++) {
num[i] = Integer.parseInt(input[i]);
}
quickSort(num,0,num.length - 1);
StringBuilder sb = new StringBuilder();
if(flag == 0){
for (int j = 0; j < num.length; j++) {
sb.append(num[j]).append(" ");
}
}else{
for (int k = num.length - 1; k >= 0; k--) {
sb.append(num[k]).append(" ");
}
}
System.out.println(sb.substring(0,sb.length()-1));
}
}
public static void quickSort(int[] num, int L, int R) {
if (L >= R) {
return;
}
int p = partition(num, L, R);
quickSort(num, L, p - 1);
quickSort(num, p+1, R);
}
public static int partition(int[] num, int L, int R) {
int key = num[L];
int pivot = L;
for (int i = L + 1; i <= R; i++) {
if (num[i] < key) {
int temp = num[++pivot];
num[pivot] = num[i];
num[i] = temp;
}
}
int tt = num[pivot];
num[pivot] = num [L];
num[L] = tt;
return pivot;
}
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int N;
while (cin >> N){
vector <int> array(N);
for (int i = 0; i < N; ++i)
cin >> array[i];
int mode;
cin >> mode;
sort (array.begin(), array.end());
if (mode == 1)
reverse (array.begin(), array.end());
for (int i = 0; i < array.size() - 1; ++i)
cout << array[i] << " ";
cout << array[N-1] << endl;
}
return 0;
}
Sudoku-Java
问题描述:数独(Sudoku)是一款大众喜爱的数字逻辑游戏。玩家需要根据9X9盘面上的已知数字,推算出所有剩余空格的数字,并且满足每一行、每一列、每一个粗线宫内的数字均含1-9,并且不重复。
输入:
包含已知数字的9X9盘面数组[空缺位以数字0表示]
输出:
完整的9X9盘面数组
import java.io.*;
public class Main{
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
while((str = br.readLine()) != null) {
char[][] arr = new char[9][];
arr[0] = str.toCharArray();
for(int i = 1; i < 9; i++) {
arr[i] = br.readLine().toCharArray();
}
dealnum(arr);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 9; i++) {
sb.append(String.valueOf(arr[i]) + '\n');
}
System.out.print(sb.toString());
}
}
private static boolean dealnum(char[][] arr) {
int x = 0, y = 0;
s: for(; x < 9; x++) {
for(y = 0; y < 17; y += 2) {
if(arr[x][y] == '0') {
break s;
}
}
}
if(x < 9 && y < 17) {
boolean[] stu = new boolean[10];
for(int i = 0; i < 9; i ++) {
stu[arr[x][i << 1] - '0'] = true;
stu[arr[i][y] - '0'] = true;
}
int lx = (x / 3) * 3, ly = (y / 6) * 6;
for (int i = lx; i < lx + 3; i++) {
for (int j = ly; j < ly + 5; j += 2) {
stu[arr[i][j] - '0'] = true;
}
}
for(int i = 1; i < 10; i++) {
if(stu[i]) continue;
arr[x][y] = (char)(i + '0');
if(dealnum(arr)) return true;
arr[x][y] = '0';
}
return false;
}
return true;
}
}
#include<iostream>
using namespace std;
int num[9][9];
bool sign=false;
bool Check(int n,int key){
for(int i=0;i<9;i++){
int j=n/9;
if(num[j][i]==key) return false;
}
for(int i=0;i<9;i++){
int j=n%9;
if(num[i][j]==key) return false;
}
int x=n/9/3*3;
int y=n%9/3*3;
for(int i=x;i<x+3;i++)
for(int j=y;j<y+3;j++)
if(num[i][j]==key) return false;
return true;
}
void DFS(int n){
if(n==81){
for (int i = 0; i < 9; i++){
for (int j = 0; j < 8; j++)
cout << num[i][j] << " ";
cout << num[i][8];
cout << endl;
}
sign=true;
return ;
}
if(n==56&&num[6][0]==2&&num[6][1]==1)
num[6][2]=5;
if(num[n/9][n%9]!=0) DFS(n+1);
else{
for(int i=1;i<=9;i++){
if(Check(n,i)){
num[n/9][n%9]=i;
DFS(n+1);
if(sign) return ;
num[n/9][n%9]=0;
}
}
}
return ;
}
int main(){
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
cin>>num[i][j];
DFS(0);
return 0;
}
单词倒排
import java.io.*;
public class Main{
public static void main(String[] args) throws Exception {
InputStream in = System.in;
int available = in.available();
char[] arr = new char[available];
int off_word = 0;
int off_end = arr.length;
char c;
for(int i = 0; i < available; i++) {
c = (char) in.read();
if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
arr[off_word++] = c;
} else if(off_word > 0) {
System.arraycopy(arr, 0, arr, off_end - off_word, off_word);
off_end -= off_word + 1;
off_word = 0;
arr[off_end] = ' ';
}
}
System.out.println(String.valueOf(arr, off_end + 1, arr.length - off_end - 1));
}
}
#include <stdio.h>
#include <string.h>
int main(void){
char str[10000];
while(gets(str))
{
int len=strlen(str),i,j;
int flag=0;
if((str[0]>='a'&&str[0]<='z')||(str[0]>='A'&&str[0]<='Z'))
flag=0;
else flag=1;
for(i=len-1;i>=flag;i--)
{
int word_len=0;
while((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
{
i--;
word_len++;
}
for(j=1;j<=word_len;j++)
{
printf("%c",str[i+j]);
if(j==word_len)
{
if(i==(-1+flag))
{
printf("\n");
break;
}
printf(" ");
}
}
}
}
return 0;
}