1 条题解
-
0
C :
#include <stdio.h> #include <stdlib.h> #define FOR(i,n) for(i=0;i<n;i++) struct node{ int begin,end,pos; }; int cmp(const void *a, const void *b){ struct node e1 = *(struct node *)a; struct node e2 = *(struct node *)b; return e1.end - e2.end; } int main(){ int n; int i,j,max; struct node f[105]; while(~scanf("%d", &n), n){ FOR(i,n){ scanf("%d%d", &f[i].begin, &f[i].end); } qsort(f, n, sizeof(f[0]),cmp); FOR(i,n){ f[i].pos = 0; FOR(j,i){ if(f[j].end<=f[i].begin&&f[j].pos>f[i].pos) f[i].pos = f[j].pos; } f[i].pos++; } /* FOR(i,n) printf("i=%d begin=%d end=%d pos=%d\n", i+1, f[i].begin,f[i].end,f[i].pos); */ max = -1; FOR(i,n){ if(max<f[i].pos) max = f[i].pos; } printf("%d\n", max); } return 0; }C++ :
#include<cstdio> #include<algorithm> using namespace std; struct tv { int s; int e; }a[100],t; bool cmp(tv a,tv b) { if(a.e==b.e) return a.s<b.s; else return a.e<b.e; } int main() { int n,i,k; while(scanf("%d",&n)!=EOF,n) { k=1; for(i=0;i<n;i++) scanf("%d%d",&a[i].s,&a[i].e); sort(a,a+n,cmp); t.s=a[0].s; t.e=a[0].e; for(i=1;i<n;i++) { if(a[i].e>t.e) { if(a[i].s>=t.e) { k++; t.s=a[i].s; t.e=a[i].e; } } } printf("%d\n",k); } return 0; }Java :
import java.util.*; public class Main{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); while(scan.hasNextInt()){ int n = scan.nextInt(); if(n == 0){ break; } Tv[] tvs = new Tv[n]; int i,j,k; for(i=0; i<n; i++){ tvs[i] = new Tv(scan.nextInt(), scan.nextInt()); } for(i=0; i<n; i++){ k = i; for(j=i+1; j<n; j++){ if(tvs[j].s < tvs[k].s){ k = j; } } Tv tv = tvs[i]; tvs[i] = tvs[k]; tvs[k] = tv; } int[] dp = new int[n]; int max = dp[0] = 1; for(i=1; i<n; i++){ k = 0; for(j=0; j<i; j++){ if(tvs[j].e<=tvs[i].s && dp[j]>k){ k = dp[j]; } } dp[i] = k+1; if(dp[i] > max){ max = dp[i]; } } System.out.println(max); } } } class Tv{ Tv(int s, int e){ this.s = s; this.e = e; } int s; int e; }
- 1
信息
- ID
- 1227
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者