1191 二维数组每行最大值

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 8968 | 通过数 : 4869

题目描述


求出二维数组每行的最大元素。


输入要求


输入一个3*4的二维数组。


输出要求


输出每行的最大值。各占一行。


输入样例


1 3 5 7 2 6 9 2 11 4 6 5


输出样例


7 9 11


提示



来源


NBU OJ


#include<stdio.h>          //C
int main(){
	int a[3][4],i,j,max[3];
	for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]);
	for(i=0;i<3;i++){
		max[i]=a[i][0];
		for(j=0;j<4;j++){
			if(max[i]<a[i][j]) max[i]=a[i][j];
		}
	}
	for(i=0;i<3;i++) printf("%d\n",max[i]);
	return 0;
}

1192 约瑟夫问题(1)

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 4247 | 通过数 : 2065

题目描述


约瑟夫问题是一个有趣的游戏。有n个人围成一圈,从第一个人开始沿顺时针方向报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那个人?


输入要求


输入一个整数n。(n<=1000)


输出要求


输出最后剩下的数。


输入样例


5


输出样例


4


提示



来源


NBU OJ


(俺不会,这道题当笔记来看)

(2条消息) 1192 约瑟夫问题(1)(I just want you to know my answer)_张立龙666的博客-_1192 约瑟夫问题(1)

我之前看过一本算法书,它(约瑟夫问题)可以用链表来解决的

#include<stdio.h>     //C
int main(){
	int a[1000]={0};//将所有定义的数组位置的值都为零,目的是标记它们(被标记的时候为 1) 
	int m=3,i,n,k=0,c,d=0;//k,i,d均为条件累加值 
	scanf("%d",&n);
	for(i=1;k!=n;i++){//只要找到符合条件 m进行寻找 n 次就结束此循环,结果得出 
		if(i>n) i=1;//目的给定这 n个数,这 n个数的位置序号永不变 
		if(a[i]==0){//只要没有被标记,进入此条件语句
			d++;//d这个累加值是为了找到等于符合 m值 
			if(d==m){//d累加值达到 m的时候进入此条件语句 
				d=0;//重新初始化 d,为去寻找下一次的 m做准备 
				a[i]=1;//每次被输出的将其标记为 1,为了不进行 d++计数 
				k++;//只要找到数到 m 的就 + 1,直到进行加到 n就结束 for循环,结果得出
				if(k==n) printf("%d\n",i);
			}
		}
	} 
	return 0;
}

1193

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 8851 | 通过数 : 2921



题目描述



有一个长度为n数组,需要将数组中从指定位置m开始的k个元素倒放在原来的数组中。




输入要求



第一行输入n,m,k (1<=n<=50,1<=m<=n,1<=k<=n-m+1)

第二行输入数组中的n个数。

m代表元素的实际位置而不是在数组中的下标值。



输出要求

输出倒置后的数组,两个数字之间用空格间隔。



输入样例

13 3 11
1 2 3 4 5 6 7 8 9 10 11 12 13



输出样例

1 2 13 12 11 10 9 8 7 6 5 4 3



提示





来源

NBU OJ
#include<stdio.h>      //C
int main(){
	int n,m,k,a[50],i,set=1;
	scanf("%d%d%d",&n,&m,&k);
	for(i=0;i<n;i++) scanf("%d",&a[i]);
	for(i=0;i<m-1;i++){//前--[0,m-1) 
		if(set){
			printf("%d",a[i]);
			set=0;
		}
		else printf(" %d",a[i]);
	} 
	for(i=m+k-2;i>=m-1;i--) printf(" %d",a[i]);//中--[m-1,m+k-2] 
	for(i=m+k-1;i<n;i++) printf(" %d",a[i]);//后--(m+k-2,n),即 [m+k-1,n) 
	printf("\n");
	return 0;
}

1194 剔除数字0

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 14277 | 通过数 : 5210

题目描述


给定一组数据,将其中的数字0去掉并且输出剩余的元素。


输入要求



第一行输入一个整数n代表数据的个数(1≤n≤50)。

第二行输入这n个数。

输出要求


输出剔除0以后,剩余的数字内容。


输入样例


5 1 5 0 6 0


输出样例


1 5 6


提示


输出时,两个数字之间用空格间隔,最后一个数字的后面没有空格。


来源


NBU OJ


#include<stdio.h>      //C
int main(){
	int n,a[50],i,set=1;
	scanf("%d",&n);
	for(i=0;i<n;i++) scanf("%d",&a[i]);
	for(i=0;i<n;i++){
		if(a[i]==0) continue;
		if(set) printf("%d",a[i]),set=0;
		else printf(" %d",a[i]);
	}
	printf("\n");
	return 0;
}

1195 巧妙推算走楼梯

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 3181 | 通过数 : 1352

题目描述


有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?


输入要求



输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。

输出要求



对于每个测试实例,请输出不同走法的数量。

输入样例


2 2 3


输出样例


1 2


提示



来源


NBU OJ


#include<stdio.h>      //C
#include<math.h>
int main(){
	int n,a;
	double x,y=sqrt(5);
	scanf("%d",&n);
	while(n){
		scanf("%d",&a);
		x=(pow((1+y)/2,a)-pow((1-y)/2,a))/y;
		printf("%.0f\n",x);
		n--;
	}
	return 0;
}

1196 骨牌铺放

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 2869 | 通过数 : 939

题目描述



在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:

java二维数组怎么定义一个十行十列的空数组 java二维数组每行最大值_i++

输入要求


输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n .(1<=n<=50)


输出要求


对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。


输入样例


1 3 2


输出样例


1 3 2


提示


_int 64


来源


NBU OJ


#include<stdio.h>      //C
#include<math.h>
int main(){
	__int64 a;
	double x,y=sqrt(5);
	while(~scanf("%I64d",&a)){
		a++;
		x=(pow((1+y)/2,a)-pow((1-y)/2,a))/y;
		printf("%.0f\n",x);
	}
	return 0;
}

 


1197 平面分割

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 2010 | 通过数 : 1087

题目描述


我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。


java二维数组怎么定义一个十行十列的空数组 java二维数组每行最大值_Java_02

输入要求


输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n,代表折线的数目.


输出要求


对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。


输入样例


2 1 2


输出样例


2 7


提示


保证所有输入输出数据都在int范围内


来源


NBU OJ


#include<stdio.h>         //C
int main(){
    int n,m,i;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&m);
        printf("%d\n",(2*m*m)-m+1);
    }
    return 0;
}

 


1198

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 9993 | 通过数 : 4638



题目描述

输入一个整数表示一个星期中的某一天,若此数字在[1,7]内,则输出对应英文星期名,否则表示输入错误。例如,输入2,则输出“Tuesday”;输入7,则输出“Sunday”;输入非法数值16,则输出“Illegal day”。(输出不包括双引号)



输入要求

输入一个整数。



输出要求

输出这一天对应的英文星期名。



输入样例

2



输出样例

Tuesday



提示



数字1~7分别对应:Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday。

        



来源

NBU OJ
#include<stdio.h>        //C
int main(){
	int n;
	char str[10][10]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
	scanf("%d",&n);
	if(n>=1&&n<=7) puts(str[n-1]);
	else printf("Illegal day\n");
	return 0;
}

1199 判断字符串类型

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 13560 | 通过数 : 6293

题目描述


输入一个字符串,其中只能包括数字或字母。对应输入的字符串,输出它的类型。如果是仅由数字构成的那么输出digit,如果是仅由字母构成的那么输出character,如果是由数字和字母一起构成的输出mixed。


输入要求


输入一个字符串,长度不超过1000,且字符串中只包括数字或大、小写字母。


输出要求


输出对应的类型。


输入样例


Sun2009


输出样例


mixed


提示



来源


NBU OJ


#include<stdio.h>         //C
#include<string.h>
int main(){
	char a[1000];
	int i,len=0,set=0,flag=0;
	gets(a);
	len=strlen(a);
	for(i=0;i<len;i++){
		if(a[i]>='0'&&a[i]<='9') set=1;
		else if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z') flag=1;
	}
	if(set&&flag==0) printf("digit");
	else if(set==0&&flag) printf("character");
	else printf("mixed");
	printf("\n");
	return 0;
}