zoukankan      html  css  js  c++  java
  • 二叉树相关代码

    小球

    #include <cstdio>
    #include <cstring>
    
    const int MAXN = 25; 
    
    int d, i;
    int s[1 << MAXN];
    
    int main() {
    	memset(s, 0, sizeof(s));
    	scanf("%d %d", &d, &i);
    	int k, n = (1 << d) - 1;
    	for(int j = 1;j <= i;j ++) {
    		k = 1;
    		while(1) {
    			s[k] = !s[k];
    			k = s[k] ? k * 2 : k * 2 + 1;
    			if(k > n) break;
    		}
    	}
    	printf("%d", k / 2);
    	return 0;
    } 
    

    找树根和孩子

    #include <cstdio>
    #include <iostream>
    using namespace std;
    
    int n, m, tree[105] = {0};
    int x, y, root, maxroot, sum = 0, j, Max = 0;
    
    int main() {
    	scanf("%d %d", &n, &m);
    	for(int i = 1;i <= m;i ++) {
    		scanf("%d %d", &x, &y);
    		tree[y] = x;
    	} 
    	for(int i = 1;i <= n;i ++) {
    		if(tree[i] == 0) {
    			root = i;
    			break;
    		}
    	}
    	for(int i = 1;i <= n;i ++) {
    		sum = 0;
    		for(int j = 1;j <= n;j ++) {
    			if(tree[j] == i) sum ++;
    		}
    		if(sum > Max) {
    			Max = sum;
    			maxroot = i;
    		}
    	}
    	printf("%d
    %d
    ", root, maxroot);
    	for(int i = 1;i <= n;i ++) 
    		if(tree[i] == maxroot) printf("%d ",i);
    	return 0;
    }
    

    单词查找树

    #include <cstdio>
    #include <iostream> 
    #include <cstring>
    using namespace std;
    
    int n, t, k;
    string a[8005];
    string s;
    
    int main() {
    	while(cin >> a[++ n]);
    	n --;
    	for(int i = 1;i < n;i ++) {
    		for(int j = i + 1;j <= n;j ++) {
    			if(a[j] > a[i]) {
    				s = a[i];
    				a[i] = a[j];
    				a[j] = s;
    			}
    		}
    	}
    	t = a[1].length();
    	for(int i = 2;i <= n;i ++) {
    		int j = 0;
    		while(a[i][j] == a[i - 1][j] && j < a[i - 1].length()) j ++;
    		t += a[i].length() - j;
    	}
    	printf("%d", t + 1);
    	return 0;
    } 
    

    医院设置

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        int n, l, r;
        int a[105][105], b[105];
        cin >> n;
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++) a[i][j] = 999999999;
    
        for (int i = 1; i <= n; i++) {
            a[i][i] = 0;
            cin >> b[i] >> l >> r;
            if (l > 0)
                a[i][l] = a[l][i] = 1;
            if (r > 0)
                a[i][r] = a[r][i] = 1;
        }
    
        for (int k = 1; k <= n; k++)
            for (int i = 1; i <= n; i++)
                if (i != k)
                    for (int j = 1; j <= n; j++)
                        if (j != i && j != k && a[i][k] + a[k][j] < a[i][j])
                            a[i][j] = a[i][k] + a[k][j];
        int minn = 999999999;
        for (int i = 1; i <= n; i++) {
            int sum = 0;
            for (int j = 1; j <= n; j++) sum += a[i][j] * b[j];
            if (sum < minn)
                minn = sum;
        }
        cout << minn << endl;
        return 0;
    }
    
  • 相关阅读:
    POJ-3176 Cow Bowling
    01背包、完全背包、多重背包
    最后的几天暑假学习
    暑假的学习
    凸包算法(Graham扫描法)详解
    微软版的SqlHelper.cs类
    SQL语句分组排序,多表关联排序
    SQL存储过程分页(通用的拼接SQL语句思路实现)
    增加删除字段修改字段名,修改表结构,非常用SQL语句技巧总结
    Asp.net mvc返回Xml结果,扩展Controller实现XmlResult以返回XML格式数据
  • 原文地址:https://www.cnblogs.com/cqbz-ChenJiage/p/13504669.html
Copyright © 2011-2022 走看看