1 条题解
-
0
C :
#include<stdio.h> int main() { int a[5],i,c,j,t,n; while(scanf("%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4])!=EOF) { c=0; for(i=0;i<5;i++) {if(a[i]==0)c++;} for(i=1;i<5;i++) for(j=0;j<5-i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } for(i=c;i<4;i++) if(a[i]==a[i+1])break; if(i==4&&a[4]-a[c]<=4||c==4||c==5) printf("1\n"); else printf("0\n"); }}
C++ :
#include <vector> #include <stdio.h> #include <algorithm> // Determine whether numbers in an array are continuous // Parameters: numbers: an array, each number in the array is between // 0 and maxNumber. 0 can be treeted as any number between // 1 and maxNumber // maxNumber: the maximum number in the array numbers bool IsContinuous(std::vector<int> numbers, int maxNumber) { if(numbers.size() == 0 || maxNumber <=0) return false; // Sort the array numbers. std::sort(numbers.begin(), numbers.end()); int numberOfZero = 0; int numberOfGap = 0; // how many 0s in the array? std::vector<int>::iterator smallerNumber = numbers.begin(); while(smallerNumber != numbers.end() && *smallerNumber == 0) { numberOfZero++; ++smallerNumber; } // get the total gaps between all adjacent two numbers std::vector<int>::iterator biggerNumber = smallerNumber + 1; while(biggerNumber < numbers.end()) { // if any non-zero number appears more than once in the array, // the array can't be continuous if(*biggerNumber == *smallerNumber) return false; numberOfGap += *biggerNumber - *smallerNumber - 1; smallerNumber = biggerNumber; ++biggerNumber; } return (numberOfGap > numberOfZero) ? false : true; } int main() { int n,i,j; std::vector<int> numbers; while(1) { for(i=0;i<5;i++) { if(scanf("%d",&j)==EOF) return 0; numbers.push_back(j); } printf("%d\n",IsContinuous(numbers,13)); numbers.clear(); } return 0; }
Java :
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); while (cin.hasNext()) { int card[] = new int[15]; int temp; for (int i = 0; i < 5; i++) { temp = cin.nextInt(); card[temp]++; } if (isStraight(card)) System.out.println("1"); else System.out.println("0"); } } public static boolean isStraight(int card[]) { for (int i = 1; i <= 13; i++) if (card[i] > 1) return false; int maxHasStraight = 0; int fiveSum = 0; for (int i = 1; i <= 5; i++) if (card[i] != 0) fiveSum++; maxHasStraight = Math.max(maxHasStraight, fiveSum); for (int i = 6; i <= 13; i++) { if (card[i] != 0) fiveSum++; if (card[i - 5] != 0) fiveSum--; maxHasStraight = Math.max(maxHasStraight, fiveSum); } if (maxHasStraight + card[0] == 5) return true; return false; } }
- 1
信息
- ID
- 2192
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者