0 0

求思路3

要求如下:

 

根据下面要求转换格式

 

说明:

1;1;1  分别代表第一行;第一列;值为1

 

1;1;1
1;2;1
1;3;0
1;4;1

2;4;0
2;3;1
2;2;0
2;1;1

 

转换后的格式为

 

1101

1010

 

可能行数列数为变数,求高手思路。

 

 

 

 


问题补充:<div class="quote_title">myali88 写道</div><div class="quote_div">转换后的涵义没有说明吗?</div> <br /> <br />转换后的值就是给出的最后一定数的值 <br />例如1101中的第一个1就是转换之前的末位 <br />

问题补充:<div class="quote_title">myali88 写道</div><div class="quote_div"><div class="quote_title">引用</div><div class="quote_div"> <br />1;1;1 <br />1;2;1 <br />1;3;0 <br />1;4;1 <br /> <br />2;4;0 <br />2;3;1 <br />2;2;0 <br />2;1;1 <br /></div> <br />和<div class="quote_title">引用</div><div class="quote_div">1101 <br /> <br />1010</div> <br />你这个例子也对不上啊,哪里是最后一个呢?如果是最后一个数字的话,那应该是:1101 0101才对啊?</div> <br /> <br />2;4;0 <br />2;3;1 <br />2;2;0 <br />2;1;1 <br /> <br />注意第二个数,开始是从第4列开始。是0
2011年8月23日 09:13

7个答案 按时间排序 按投票排序

0 0

package com.money;

import java.awt.Point;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;

import org.apache.commons.collections.CollectionUtils;

public class MyPointesTable {
	Map<Point, Integer> map = new HashMap<Point, Integer>();

	public void putOne(int x, int y, int z) {
		map.put(new Point(x, y), z);
	}

	public String getLine(int line) {
		Map<Integer,Integer> list = new TreeMap<Integer ,Integer>();
		for (Map.Entry<Point, Integer> e : map.entrySet()) {
			Point p = e.getKey();
			if (p.x == line) {
				
				list.put(p.y, e.getValue());
			}

		}
		return "" + list.values();

	}

	public static void main(String arg[]) {
		System.out.println("-----");
		MyPointesTable table = new MyPointesTable();
		table.putOne(1, 1, 1);
		table.putOne(1, 2, 1);
		table.putOne(1, 3, 0);
		table.putOne(1, 4, 1);
		table.putOne(2, 4, 0);
		table.putOne(2, 3, 1);
		table.putOne(2, 2, 0);
		table.putOne(2, 1, 1);
		for(int i = 1 ; i <= 2;i++){
			String lone = table.getLine(i);
			System.out.println(lone);
		}
		

	}
}

2011年8月24日 10:58
0 0

package com.money;

import java.awt.Point;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;

import org.apache.commons.collections.CollectionUtils;

public class MyPointesTable {
Map<Point, Integer> map = new HashMap<Point, Integer>();

public void putOne(int x, int y, int z) {
map.put(new Point(x, y), z);
}

public String getLine(int line) {
Map<Integer,Integer> list = new TreeMap<Integer ,Integer>();
for (Map.Entry<Point, Integer> e : map.entrySet()) {
Point p = e.getKey();
if (p.x == line) {

list.put(p.y, e.getValue());
}

}
return "" + list.values();

}

public static void main(String arg[]) {
System.out.println("-----");
MyPointesTable table = new MyPointesTable();
table.putOne(1, 1, 1);
table.putOne(1, 2, 1);
table.putOne(1, 3, 0);
table.putOne(1, 4, 1);
table.putOne(2, 4, 0);
table.putOne(2, 3, 1);
table.putOne(2, 2, 0);
table.putOne(2, 1, 1);
for(int i = 1 ; i <= 2;i++){
String lone = table.getLine(i);
System.out.println(lone);
}


}
}

2011年8月24日 10:56
0 0

import java.util.ArrayList;
import java.util.List;


public class NumberConverter {
	
	public static List<String> convert(List<String> source)
	{
		int[][] storage = new int[2][4];
		
		for(int i=0,len=source.size();i<len;i++)
		{
			int[] ret = resolve(source.get(i));
			storage[ret[0]-1][ret[1]-1] = ret[2];
		}
		
		return compose(storage);
	}
	
	private static List<String> compose(int[][] src)
	{
		List<String> list = new ArrayList<String>();
		
		for(int i =0;i<src.length;i++)
		{
			String row = "";
			for(int j=0;j<src[i].length;j++)
			{
				row += src[i][j];
			}
			list.add(i, row);
		}
		return list;
	}
	
	private static int[] resolve(String source)
	{
		int [] results = new int[3];
		String [] result = source.split(";");
		for(int i =0;i<result.length;i++)
		{
			results[i]= Integer.parseInt(result[i]);
		}
		return results;
	}
	
}



public static void main(String [] args)
	{
//		String str1 = " this is a book. 222 are u.";
//		String str2 = StringUtils.replace(str1, "wo", "\\d");
//		System.out.println("ok:"+str2);
		
		//2.  convert
		List<String> list = new ArrayList<String>();
		list.add("1;1;1");
		list.add("1;2;1");
		list.add("1;3;0");
		list.add("1;4;1");
		list.add("2;4;0");
		list.add("2;3;1");
		list.add("2;2;0");
		list.add("2;1;1");
		
		List<String> ret = NumberConverter.convert(list);
		
		for(int i=0;i<ret.size();i++)
		{
			System.out.println(ret.get(i));
		}
		
	}



方法大致这样,具体里面需要修改,因为java的数组不支持动态数组,所以具体实现时使用vector或者arraylist来代替。
主要方法就是,你先将你的结果排成矩阵存储。然后最后输出时使用一个方法来组合矩阵中的一行。

2011年8月23日 11:21
0 0

明白你的意思了,我想可以这样:
1、创建一个类Index包含x,y,分别表示行号和列号
2、按行解析上面的数据,创建Index的对象,并保存到Map中,其key为:index对象,value为解析的值。
3、对Map按key排序,排序的原则就是:index对象x值小的靠前,x相等,y值小的靠前,这样排序后,Map里的值就是按照一行一行的先后顺序完全排列了。
4、最后迭代Map获取value。

2011年8月23日 10:56
0 0

引用

1;1;1
1;2;1
1;3;0
1;4;1

2;4;0
2;3;1
2;2;0
2;1;1

引用
1101

1010

你这个例子也对不上啊,哪里是最后一个呢?如果是最后一个数字的话,那应该是:1101 0101才对啊?

2011年8月23日 09:42
0 0

转换后

引用
1101

1010

这个什么意思啊

2011年8月23日 09:36
0 0

转换后的涵义没有说明吗?

2011年8月23日 09:18

相关推荐

Global site tag (gtag.js) - Google Analytics