第1次实验——NPC问题(回溯算法、聚类分析)

public class Queen {
    int size;
    int resultCount;
    int flag=0;
    public void compute ( int size ) {
        this.size = size;
        resultCount = 0;
         int data[] = new int[size];
        int count; // 所有可能的情况个数
        int i,j;
        
        // 计算所有可能的情况的个数
        count = 1;
        for ( i=0 ; i<size ; i++ ) {
            count = count * size;
        }
        // 对每一个可能的情况
        for ( i=0 ; i<count ; i++ ) {
            // 计算这种情况下的棋盘上皇后的摆放位置,用 8 进制数表示
            // 此处可优化
            int temp = i;
            for ( j=0 ; j<size ; j++ ) {
                data [j] = temp % size;
                temp = temp / size;
            }
            // 测试这种情况是否可行,如果可以,输出
            
            if ( test(data)&&flag<3){
                output( data );
                flag++;}
            
        }
    }

    /*
     * 测试这种情况皇后的排列是否可行
     * 
*/
    public boolean test( int[] data ) {
        int i,j;
        for ( i=0 ; i<size ; i++ ) {
            for ( j=i+1 ; j<size ; j++ ) {
                // 测试是否在同一排
                if ( data[i] == data[j] )
                    return false;
                // 测试是否在一斜线
                if ( (data[i]+i) == (data[j]+j) )
                    return false;
                // 测试是否在一反斜线
                if ( (data[i]-i) == (data[j]-j) )
                    return false;
            }
        }
        return true;
    }

    /*
     * 输出某种情况下皇后的坐标
     *
     */
    public void output ( int[] data ) {
        int i;
        System.out.print ( ++resultCount + ": " );
        for ( i=0 ; i<size ; i++ ) {
            System.out.print ( "(" + i + "," + data[i] + ") " );
        }
        System.out.println ();
    }
    public static void main(String args[]) {
        (new Queen()).compute( 8 );
    }
}



学生聚类分析思考
对学生进行分组,并将k个学生分别分配给中心向量C1、C2、C3、....、Ck,
其中 学生会别分成,学霸型,自我中心型,游戏人生型,游戏与学习型这四种,
然后对所有学生进行调查,例如学习时间的长度,以及去图书馆的次数,电脑游戏时间,
娱乐时间,再对各项数据的归并统计,可以得到学生的类型 
我会对学生进行分类,要素有很多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值