1 条题解
-
0
C :
#include<stdio.h> int n,begin[1000],end[1000],a[1000],k; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d %d",&begin[i],&end[i]); for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) if(end[i]>end[j]) { int t1=begin[i],t2=end[i]; begin[i]=begin[j]; begin[j]=t1; end[i]=end[j]; end[j]=t2; } int endx=0; for(int i=1;i<=n;i++) if(begin[i]>=endx) { endx=end[i]; k++; } printf("%d",k); return 0; }C++ :
#include<iostream> using namespace std; int n,b[1001],e[1001]; void solve() { int ans=0; int t = -1; for(int i=1;i<=n;++i) //如果当前活动与之前最后结束的活动不冲突,就接受当前活动。 if(b[i]>=t) { ++ans; t=e[i]; } cout<<ans<<endl; } int main() { int i,j,t; cin>>n; for(i=1;i<=n;i++) cin>>b[i]>>e[i]; //按照结束时间对2个数组同时排序 for(i = 1;i < n;i++){ for(j = 1;j <= n - i;j++){ if(e[j] > e[j+1]){ swap(e[j],e[j+1]); swap(b[j],b[j+1]); } } } solve(); return 0; }Java :
import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(),i; //节点数组 Node[] nodes = new Node[n]; for(i=0;i<n;i++) { nodes[i] = new Node(); nodes[i].begin = sc.nextInt(); nodes[i].end = sc.nextInt(); } Arrays.sort(nodes,new Comparator<Node>() { @Override public int compare(Node a, Node b) { if(a.end < b.end) return -1; else return 1; } }); int end = nodes[0].end; int c = 1; for(i=1;i<n;i++){ //如果当前的开始时间 >=上一个活动的结束时间 if(nodes[i].begin >= end){ c++; end = nodes[i].end; } } System.out.println(c); sc.close(); } } class Node{ int begin; int end; }Python :
n=int(input()) a=[[0 for i in range(2)] for j in range(n)] for i in range(n): sr=input().split() a[i][0]=int(sr[0]) a[i][1]=int(sr[1]) for i in range(n-1): for j in range(n-i-1): if(a[j][1]>a[j+1][1]): t=a[j][0] a[j][0]=a[j+1][0] a[j+1][0]=t t=a[j][1] a[j][1]=a[j+1][1] a[j+1][1]=t c=[] c.append(a[0][1]) k=0 for i in range(1,n): if(a[i][0]>=c[k]): k=k+1 c.append(a[i][1]) print(k+1)
- 1
信息
- ID
- 352
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者